文章目錄
一、Mybatis 和 Spring Mybatis 的關係
1、什麼是 MyBatis?
MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。
2、什麼是 MyBatis-Spring?
MyBatis-Spring 會幫助你將 MyBatis 代碼無縫地整合到 Spring 中。它將允許 MyBatis 參與到 Spring 的事務管理之中,創建映射器 mapper 和 SqlSession
並注入到 bean 中,以及將 Mybatis 的異常轉換爲 Spring 的 DataAccessException
。最終,可以做到應用代碼不依賴於 MyBatis,Spring 或 MyBatis-Spring。
開始學習時,要注意這兩者的關係和區別:
3、MyBatis數據庫連接配置示例
1)、POM依賴
<properties>
<mysql.version>5.1.38</mysql.version>
<mybatis.version>3.5.2</mybatis.version>
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
<build>
<!--資源文件管理-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</build>
2)、數據連接配置
<!--文件:mybatis-config.xml-->
<configuration>
<properties resource="./db.properties">
<property name="jdbc-driver" value=""/>
<property name="jdbc-url" value=""/>
<property name="username" value=""/>
<property name="password" value=""/>
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc-driver}"/>
<property name="url" value="${jdbc-url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/tonghua/dao/UserInfoMapper.xml"/>
</mappers>
</configuration>
#文件:db.properties
jdbc-driver=com.mysql.jdbc.Driver
jdbc-url=jdbc:mysql://localhost/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=usertest
password=123456
3)、Mapper文件:
UserInfoMapper.java
package com.tonghua.dao;
import com.tonghua.pojo.UserInfo;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserInfoMapper {
List<UserInfo> selectUserList();
}
UserInfoMapper.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.tonghua.dao.UserInfoMapper">
<select id="selectUserList" resultType="com.tonghua.pojo.UserInfo">
select * from userinfo;
</select>
</mapper>
4)、實體類
package com.tonghua.pojo;
public class UserInfo {
private int id;
private String username;
private String gender;
public UserInfo(int id, String username, String gender) {
this.id = id;
this.username = username;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "UserInfo{" +
"id=" + id +
", username='" + username + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
5)、工具類(創建SqlSession)
package com.tonghua.utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
6)、單元測試
UserInfoDaoTest.java
package com.tonghua.dao;
import com.tonghua.pojo.UserInfo;
import com.tonghua.utils.MybatisUtils;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class UserInfoDaoTest {
@Test
public void test() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserInfoMapper userInfoMapper = sqlSession.getMapper(UserInfoMapper.class);
List<UserInfo> userList = userInfoMapper.selectUserList();
for (UserInfo userInfo : userList) {
System.out.println(userInfo);
}
sqlSession.close();
}
}
7)、目錄結構圖
這是mybatis的一種連接方式,測試通過