1. 程式人生 > 其它 >mybatis 配置及應用

mybatis 配置及應用

maven 構建專案

1. 新增依賴

spring-webmvc
mybatis
mysql-connector-java
mybatis-spring
junit

pom.xml 檔案內容如下:
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
> 5 <parent> 6 <artifactId>springStudy</artifactId> 7 <groupId>org.example</groupId> 8 <version>1.0-SNAPSHOT</version> 9 </parent> 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>mybatis-01</
artifactId> 13 14 <properties> 15 <maven.compiler.source>8</maven.compiler.source> 16 <maven.compiler.target>8</maven.compiler.target> 17 </properties> 18 19 <dependencies> 20 21 <dependency> 22 <groupId
>org.springframework</groupId> 23 <artifactId>spring-webmvc</artifactId> 24 <version>5.3.7</version> 25 </dependency> 26 27 <dependency> 28 <groupId>org.mybatis</groupId> 29 <artifactId>mybatis</artifactId> 30 <version>3.4.6</version> 31 </dependency> 32 33 <dependency> 34 <groupId>mysql</groupId> 35 <artifactId>mysql-connector-java</artifactId> 36 <version>5.1.49</version> 37 </dependency> 38 39 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> 40 <dependency> 41 <groupId>org.mybatis</groupId> 42 <artifactId>mybatis-spring</artifactId> 43 <version>1.3.2</version> 44 </dependency> 45 <dependency> 46 <groupId>junit</groupId> 47 <artifactId>junit</artifactId> 48 <version>RELEASE</version> 49 <scope>test</scope> 50 </dependency> 51 52 </dependencies> 53 54 <build> 55 <!-- 定義classpath --> 56 <resources> 57 <!-- resources檔案 --> 58 <resource> 59 <directory>src/main/resources</directory> 60 <!-- 是否被過濾,如果被過濾則無法使用 --> 61 <filtering>false</filtering> 62 </resource> 63 <!-- java資料夾 --> 64 <resource> 65 <directory>src/main/java</directory> 66 <!-- 引入對映檔案等 --> 67 <includes> 68 <include>**/*.xml</include> 69 <include>**/*.properties</include> 70 </includes> 71 </resource> 72 </resources> 73 </build> 74 75 </project>
pom.xml

其中<build><resource>中內容為過濾專案中 xml 檔案和 properties 檔案的設定,否則執行時專案中 xml 檔案或 properties 檔案會載入不到。

2. 建立實體類

以 User 為例,程式碼如下:

 1 package com.xsmile.pojo;
 2 
 3 import java.util.List;
 4 
 5 public class User {
 6     private int id;
 7     private String name;
 8     private String password;
 9 
10     public User() {
11     }
12 
13     public User(int id, String name, String password) {
14         this.id = id;
15         this.name = name;
16         this.password = password;
17     }
18 
19     public int getId() {
20         return id;
21     }
22 
23     public void setId(int id) {
24         this.id = id;
25     }
26 
27     public String getName() {
28         return name;
29     }
30 
31     public void setName(String name) {
32         this.name = name;
33     }
34 
35     public String getPassword() {
36         return password;
37     }
38 
39     public void setPassword(String password) {
40         this.password = password;
41     }
42 
43     @Override
44     public String toString() {
45         return "User{" +
46                 "id=" + id +
47                 ", name='" + name + '\'' +
48                 ", password='" + password + '\'' +
49                 '}';
50     }
51 }
User

3. 資料庫準備

建立專案使用的資料庫如 mybatis,User 對應的表 user。如圖所示,實體類中變數名與資料庫中列明一一對應。

4. 配置mybatis-config檔案

通用模板,只需根據自身資料庫、表、使用者名稱及密碼進行修改即可。

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC"/>
 9             <dataSource type="POOLED">
10                 <property name="driver" value="com.mysql.jdbc.Driver"/>
11                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="xjw123456"/>
14             </dataSource>
15         </environment>
16     </environments>
17     <mappers>
18         <mapper resource="com/xsmile/dao/UserMapper.xml"/>
19     </mappers>
20 </configuration>
mybatis-config.xml

值得注意的是最後 <mapper> resource 中需要新增指定的介面實現類 xml 檔案

5. 建立介面UserMapper

介面包含查詢方法,獲取表中所有使用者資訊。

1 public interface UserMapper {
2     public List<User> getUsers();
3 }
UserMapper

6. 建立實現類

實現類轉由 xml 檔案進行配置實現

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="com.xsmile.dao.UserMapper">
6     <select id="getUsers" resultType="com.xsmile.pojo.User">
7         select * from user
8     </select>
9 </mapper>
UserMapper.xml

名稱空間 namespace 指向介面全路徑,id 為要實現介面的方法名對應,resultType 為結果物件全類名的形式。

7. sqlSession 工具類

由於 sqlSession 程式碼統一,編寫為一個工具類,方便以後使用。

 1 package com.xsmile.util;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 public class MybatisUtil {
12     private static SqlSessionFactory sqlSessionFactory;
13         static {
14             String resource = "mybatis-config.xml";
15             InputStream inputStream;
16             try {
17                 inputStream = Resources.getResourceAsStream(resource);
18                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
19             } catch (IOException e) {
20                 e.printStackTrace();
21             }
22         }
23 
24 
25     public static SqlSession getSqlSession(){
26         return sqlSessionFactory.openSession();
27     }
28 
29 }
MybatisUtil

後續使用只需呼叫類方法即可獲取 sqlSession,即:

MybatisUtil.getSqlSession()

8. 編寫測試類

 1 package com.xsmile.dao;
 2 
 3 import com.xsmile.pojo.User;
 4 import com.xsmile.util.MybatisUtil;
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.junit.Test;
 7 
 8 import java.util.List;
 9 
10 public class UserMapperTest {
11 
12     @Test
13     public void test(){
14 
15         SqlSession sqlSession = MybatisUtil.getSqlSession();
16 
17         UserMapper mapper = sqlSession.getMapper(UserMapper.class);
18 
19         List<User> users = mapper.getUsers();
20 
21         for (User user : users) {
22             System.out.println(user);
23         }
24 
25 
26     }
27 }
UserMapperTest

其中sqlSession.getMapper() 為官方推薦方法,它不依賴於字串字面值,會更安全一點。另外方法如:

List<User> users1 = sqlSession.selectList("com.xsmile.dao.UserMapper.getUsers");

執行結果如下:

1 User{id=1, name='xsmile', password='123456'}
2 User{id=2, name='sophia', password='123456'}
3 User{id=3, name='alex', password='123456'}
4 User{id=4, name='jerry', password='123456'}
5 User{id=5, name='俊偉君', password='123456'}
result ----------------------------------------宣告---------------------------------------- 作者:xsmile 僅自己學習過程技術總結,如有哪裡有誤的地方,歡迎指正。 原創不易,如需轉載,請註明出處及地址 www.cnblogs.com/xsmile ----------------------------------------end----------------------------------------