1.MyBatis的环境配置
- 导入MyBatis包, mybatis-3.2.8.jar
- 导入MySQL驱动包, mysql-connector-java-5.1.24-bin.jar
- 创建表的实体类, 例如: MyUser(id, name, password)
- 编写MyBatis的核心配置文件, SqlMapConfig.xml
- 编写映射文件, 例如: MyUserMapper.xml
- 编写测试来完成数据库CRUD操作
2.MyBatis代码编写原理图,因为环境搭建成功不成功需要我们写一段代码来测试。但是如何编写一段MyBatis的测试代码,我们有必要先了解一下MyBatis整个代码运行的原理图。在这里要谢谢CSDN上这位小伙伴提供的图片
3.如何导入MyBatis的jar包都非常容易,所以这里我们从MyBatis核心配置文件编写开始讲解编写MyBatis程序的流程
- 主要配置mybatis的运行环境, 数据源, 事务, 用户名, 用户密码, 缓存等。一般此配置文件存放到src目录下
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!-- 将数据库连接信息简化到Java的属性文件中 --> 5 <properties resource="jdbc.properties"></properties> 6 7 <!-- 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的 --> 8 <typeAliases> 9 <!-- com.mybatis2.entity包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名 --> 10 <!-- 如com.mybatis2.entity.MyUser这个实体类的别名就会被设置成MyUser --> 11 <package name="com.mybatis2.entity"/> 12 </typeAliases> 13 14 <!-- 配置开发模式, 添加数据库信息, 开启事务模式 --> 15 <environments default="development"> 16 <environment id="development"> 17 <transactionManager type="JDBC"></transactionManager> 18 <dataSource type="POOLED"> 19 <property name="driver" value="${mysql.driver}"/> 20 <property name="url" value="${mysql.url}"/> 21 <property name="username" value="${mysql.username}"/> 22 <property name="password" value="${mysql.password}"/> 23 </dataSource> 24 </environment> 25 </environments> 26 27 <mappers> 28 <mapper resource="com/mybatis2/mapper/MyUserMapper.xml"/> 29 </mappers> 30 </configuration>
4.编写实体类
- 什么实体类:简单说就是一个普通的JavaBean, 满足一点要求, 就是JavaBean的属性需要对应数据库表中的字段
1 create table MyUser ( 2 id int primary key AUTO_INCREMENT, 3 name varchar(20), 4 password varchar(20) 5 )
1 package com.mybatis2.entity; 2 3 public class MyUser { 4 /* 5 * 1.MyUser.java对应表名 6 * 2.id对应MyUser表中的主键 7 * 3.username对应MyUser表中的用户名 8 * 4.userpass对象MyUser表中的用户密码 9 */ 10 11 private int id; 12 private String username; 13 private String userpass; 14 public int getId() { 15 return id; 16 } 17 public void setId(int id) { 18 this.id = id; 19 } 20 public String getUsername() { 21 return username; 22 } 23 public void setUsername(String username) { 24 this.username = username; 25 } 26 public String getUserpass() { 27 return userpass; 28 } 29 public void setUserpass(String userpass) { 30 this.userpass = userpass; 31 } 32 33 @Override 34 public String toString() { 35 return "MyUser [id="+this.id+" username="+this.username+" userpass="+this.userpass+"]"; 36 } 37 }
5.配置实体类和数据库表的映射文件
- MyBatis的映射文件主要关联实体类与数据库表,主要目的是将表返回的数据映射到实体类(封装)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 4 <!-- 给mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名 --> 5 <mapper namespace="com.mybatis2.mapper.MyUserMapper"> 6 7 <!-- 根据用户的ID来查询 --> 8 <!-- 使用占位符:#{}表示一个占位符 --> 9 <select id="getMyUserById" resultType="MyUser" parameterType="java.lang.Integer"> 10 select * from MyUser where id=#{id} 11 </select> 12 </mapper>
6.测试MyBatis
1 package com.gxa.test; 2 3 import java.io.IOException; 4 import java.io.Reader; 5 import java.util.List; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 import org.junit.Test; 12 13 import com.gxa.pojo.MyUser; 14 import com.gxa.pojo.Team; 15 16 public class Test01 { 17 /** 18 * 启动MyBatis去加载配置文件 19 * 1.java.io.Reader 20 * 2.Resources 21 * 3.SqlSessionFactory 22 */ 23 private static Reader reader; 24 private static SqlSessionFactory sqlSessionFactory; 25 26 static { 27 try { 28 reader = Resources.getResourceAsReader("config.xml"); 29 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 30 } catch (IOException e) { 31 e.printStackTrace(); 32 } 33 } 34 35 /** 36 * 1.初始化SqlSession, 执行SQL语句 37 * 2.告知程序读哪个映射文件 38 * 3.告知程序执行映射文件中哪个CRUD操作 39 */ 40 @Test 41 public void m01() { 42 SqlSession sqlSession = sqlSessionFactory.openSession(); 43 String sql = "com.gxa.mapper.MyUserMapper.getMyUser"; 44 List<MyUser> list = sqlSession.selectList(sql); 45 System.out.println(list); 46 sqlSession.close(); 47 } 48 49 }