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 }