MyBatis-----1.MyBatis简介和使用
Posted zyl187110
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-----1.MyBatis简介和使用相关的知识,希望对你有一定的参考价值。
MyBatis介绍:
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
MyBatis的特点:
l 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
l 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
l 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
l 提供映射标签,支持对象与数据库的orm字段关系映射
l 提供对象关系映射标签,支持对象关系组建维护
l 提供xml标签,支持编写动态sql。
(以上内容摘自百度百科,网址:https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin)
MyBatis的简单使用:
1. 添加 jar包
Mybatis: mybatis-3.2.2.jar
下载地址:https://github.com/mybatis/mybatis-3/releases
mysql驱动包:mysql-connection-java-5.1.7-bin.jar
下载地址:https://dev.mysql.com/downloads/connector/j/
2. 创建数据库+数据表users
create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES(‘Tom‘, 12); INSERT INTO users(NAME, age) VALUES(‘Jack‘, 11);
3. 添加MyBatis的配置文件conf.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> </configuration>
其中<property>中放的时连接数据库需要的信息
Driver: jdbc驱动位置
Url: 数据库路径
Username:连接数据库的用户名
Password:连接数据库密码
4. 创建users的bean实体类
public class User private int id; private String name; private int age; //get,set 方法
5. 定义操作users表的sql映射文件userMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zhiyou.zyl.mapper.userMapper"> <select id="getUser" parameterType="int" resultType="com.zhiyou.zyl.bean.User"> select * from users where id=#id </select> </mapper>
Namespace: 命名空间,这里一般指向Dao接口路径,例如com.zhiyou.zyl.dao.UserDao
Select: mybatis提供的查询标签,用于查询语句的实现
id:标识唯一id,这里一定要和映射的dao接口中的方法名相同。
parameterType: 传入参数类型,这里传入的时Id
ResultType: 结果参数类型,返回类型为User实体类
#: 用于mybatis解析。
6. 在conf.xml文件中注册userMapper.xml文件
<mappers> <mapper resource="com/zhiyou/zyl/mapper/userMapper.xml"/> </mappers>
7. 测试,创建测试类Test
public class Test public static void main(String[] args) throws IOException String resource = "conf.xml"; //加载 mybatis 的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建 sqlSession 的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中 sql 的 sqlSession SqlSession session = sessionFactory.openSession(); //映射 sql 的标识字符串 ,getUser一定要和select的ID相同 String statement = "com.zhiyou.zyl.mapper.userMapper"+".getUser"; //执行查询返回一个唯一 user 对象的 sql User user = session.selectOne(statement, 1); System.out.println(user);
8. eclipse中提供的测试方法
8.1 在需要测试的文件右击选择创建其他。
8.2 选择junit文件
8.3 创建测试类
8.4 @BeforAll,@AfterAll,@Test介绍
成员变量:注意这里session要定义为static,因为下面的静态方法只能调用静态属性
static SqlSession session =null; String str= "com.zhiyou.zyl.mapper.UsersMapper";
@BeforAll:在所有@Test方法执行前一定执行的内容,提高代码的复用性,这里用于加载配置文件和创建session对象。
@BeforeAll static void setUpBeforeClass() throws Exception String resource = "conf.xml"; //加载 mybatis 的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建 sqlSession 的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中 sql 的 sqlSession session = sessionFactory.openSession();
@AfterAll 在@Test执行后一定执行的内容。Mybatis默认不会将更新,增加,删除的信息提交到数据库,需要我们调用commit()方法手动进行提交。
@AfterAll static void tearDownAfterClass() throws Exception //提交 session.commit();
@Test:测试方法,直接选中方法名右击运行即可,主要用于进行各种测试
@Test void testSelectById() Users user=session.selectOne(str+".getUser", 1); System.out.println(user);
9. MyBatis提供的其他标签
9.1 select标签
UserMapper.xml文件内容
<select id="getUser" parameterType="int" resultType="com.zhiyou.zyl.bean.Users"> select * from users where id=#id </select> <!-- 查询所有--> <select id="selectAll" resultType="com.zhiyou.zyl.bean.Users"> select * from users </select>
测试方法:
@Test void testSelectById() Users user=session.selectOne(str+".getUser", 1); //查询一个对象方法 System.out.println(user); @Test void testSelectAll() List<Users> row=session.selectList(str+".selectAll"); //查询集合方法 System.out.println(row);
9.2 insert标签
UserMapper.xml文件内容:
<insert id="addUser" parameterType="com.zhiyou.zyl.bean.Users"> insert into users(name,age) values(#name,#age) </insert>
测试方法:
@Test void testAddUser() int row=session.insert(str+".addUser", new Users("张三",16)); //调用session.insert方法 System.out.println(row);
9.3 update标签
UserMapper.xml文件内容:
<update id="updateUser" parameterType="com.zhiyou.zyl.bean.Users"> update users set name=#name,age=#age where id=#id </update>
测试方法:
@Test void testUpdateUser() int row=session.update(str+".updateUser", new Users(1,"李四",16));//调用session.update方法 System.out.println(row);
9.4 delete标签
UserMapper.xml文件内容:
<delete id="deleteUser" parameterType="int"> delete from users where id=#id </delete>
测试方法:
@Test void testDeleteUser() int row=session.delete(str+".deleteUser",3); System.out.println(row);
以上是关于MyBatis-----1.MyBatis简介和使用的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis学习总结——ORM概要与MyBatis快速起步