在MyBatis的第一篇的學習中我們了解了MyBatis是什么和為什么學習MyBatis,本次我們將學習MyBatis的具體使用,
思路:環境搭建——>MyBatis匯入——>代碼撰寫——>測驗,
一、環境搭建
1.建立資料庫
CREATE DATABASE `MyBaties`; CREATE TABLE `user`( `id` INT(20) NOT NULL PRIMARY KEY, `username` VARCHAR(30) NOT NULL, `password` VARCHAR(30) NOT NULL ); INSERT INTO `user` (`id`,`username`,`password`) VALUES (10000,'jms1','123456'), (10001,'jms2','123456'), (10003,'jms3','123456')
2.建立一個maven專案
這個專案作為父專案,
修改pom.xml匯入需要的依賴:mysql驅動、mydatis、junit,
<dependencies> <!-- 匯入依賴--> <!-- mysql驅動--> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <!-- mybatis--> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <!-- junit--> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>
3.建立一個子模塊
(1)撰寫mybatis的核心組態檔mybatis-config.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="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration>
這是我個人的使用:
<?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.Dirver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybaties?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> </configuration>
(2)撰寫mybatis工具類MyBatisUtil.class
每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的實體為核心的,SqlSessionFactory 的實體可以通過 SqlSessionFactoryBuilder 獲得,而 SqlSessionFactoryBuilder 則可以從 XML 組態檔或一個預先配置的 Configuration 實體來構建出 SqlSessionFactory 實體,
從 XML 檔案中構建 SqlSessionFactory 的實體非常簡單,建議使用類路徑下的資源檔案進行配置, 但也可以使用任意的輸入流(InputStream)實體,比如用檔案路徑字串或 file:// URL 構造的輸入流,MyBatis 包含一個名叫 Resources 的工具類,它包含一些實用方法,使得從類路徑或其它位置加載資源檔案更加容易,
官方檔案給出了以下三行代碼:
String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
我們要做的就是把這三行代碼封裝到MyBatisUtil.class中:
1 package com.jms.utils; 2 3 4 import java.io.IOException; 5 import java.io.InputStream; 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 12 //SqlSessionFactory-->SqlSession 13 public class MyBatisUtil { 14 15 private static SqlSessionFactory sqlSessionFactory; 16 17 //獲取SqlSessionFactory物件 18 static { 19 try { 20 String resource = "mybatis-config.xml"; 21 InputStream inputStream = Resources.getResourceAsStream(resource); 22 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 23 } catch (IOException e) { 24 e.printStackTrace(); 25 } 26 } 27 28 //通過SqlSessionFactory獲取SqlSession物件,其中包含了面向資料庫執行執行SQL命令所需要的方法 29 public static SqlSession getSqlSession() { 30 return sqlSessionFactory.openSession(); 31 } 32 }
官網上也有著不進行核心配置,直接用純代碼進行撰寫的模式,本文就不做過多贅述,可自行了解,
3.撰寫代碼
(1)首先我們要寫一個物體類user.class,這個物體類應該與我們前面資料庫建立的user表對應,
1 package com.jms.pojo; 2 3 public class user { 4 5 private int id; 6 private String username; 7 private String password; 8 9 public user() { 10 11 } 12 13 public user(int id, String username, String password) { 14 super(); 15 this.id = id; 16 this.username = username; 17 this.password = password; 18 } 19 20 public int getId() { 21 return id; 22 } 23 public void setId(int id) { 24 this.id = id; 25 } 26 public String getUsername() { 27 return username; 28 } 29 public void setUsername(String username) { 30 this.username = username; 31 } 32 public String getPassword() { 33 return password; 34 } 35 public void setPassword(String password) { 36 this.password = password; 37 } 38 39 @Override 40 public String toString() { 41 return "user [id=" + id + ", username=" + username + ", password=" + password + "]"; 42 } 43 }
(2)撰寫一個Mapper介面UserMapper
1 package com.jms.dao; 2 3 import java.util.List; 4 5 import com.jms.pojo.User; 6 7 public interface UserMapper { 8 9 List<User> getUsers(); 10 11 }
(3)撰寫Mapper組態檔UserMapper.xml
一般來說介面都會有實作類,但是這里我們用Mapper組態檔來代替了實作類,
<?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"> <!-- 命名空間namespace對應Mapper介面 --> <mapper namespace="com.jms.dao.userMapper"> <!-- id對應介面中的方法 --> <select id="getUsers" resultType="com.jms.pojo.User"> select * from mybaties.user </select> </mapper>
4.注冊Mapper
修改mybatis的核心組態檔mybatis-config.xml,添加以下三行:
<mappers> <mapper resource="com/jms/dao/UserMapper.xml"/> </mappers>
resource對應的是實作介面的Mapper的路徑,
5.junit測驗
建立測驗類UserMapperTest.class
package com.jms.dao; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import com.jms.pojo.User; import com.jms.utils.MyBatisUtil; public class UserMapperTest { @Test public void test() { //利用工具類獲取SqlSession SqlSession sqlSession = MyBatisUtil.getSqlSession(); try { //方法一 //利用SqlSession獲取UserMapper介面 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //呼叫方法 List<User> users = userMapper.getUsers(); //方法二,老方法不推薦用 List<User> users2 = sqlSession.selectList("com.jms.dao.UserMapper.getUsers"); System.out.println("這是方法一的結果"); for(User user: users) { System.out.println(user); } System.out.println("這是方法二的結果"); for(User user: users2) { System.out.println(user); } } catch(Exception e) { e.printStackTrace(); } finally{ sqlSession.close(); } } }
上面有兩種方法,方法二不推薦,
SqlSession用完后應及時關閉,
測驗結果如下:

可以看到成功地查到了資料庫中的資訊,
(本文僅作個人學習記錄用,如有紕漏敬請指正)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505581.html
標籤:其他
