本文介紹下SpringBoot整合Mybatis(XML配置方式)的過程。
一、什么是 MyBatis?
MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為數據庫中的記錄。
二、整合方式
SpringBoot整合Mybatis也有兩種方式,分別為XML配置方式和注解方式,主要優勢點如下:
- 注解方式:代碼更加精簡,方便。
- XML配置方式:隔離sql和業務代碼,清晰表達sql,尤其對於較長的sql。
XML映射文件也很簡單,只有很少的幾個頂級元素:
- cache – 對給定命名空間的緩存配置。
- cache-ref – 對其他命名空間緩存配置的引用。
- resultMap – 是最復雜也是最強大的元素,用來描述如何從數據庫結果集中來加載對象。
- sql – 可被其他語句引用的可重用語句塊。
- insert – 映射插入語句。
- update – 映射更新語句。
- delete – 映射刪除語句。
- select – 映射查詢語句。
本文介紹XML配置方式,后續文章再介紹注解方式。
三、實戰
新建一個spring boot項目spring-boot-mybatis-xml,按照下面步驟操作。
1.pom.xml中引入jar
整合MyBatis的核心是依賴MyBatis-Spring-Boot-Starter,它提供了:
- 自動檢測現有的DataSource。
- 將創建並注冊SqlSessionFactory的實例,該實例使用SqlSessionFactoryBean將該DataSource作為輸入進行傳遞。
- 將創建並注冊從SqlSessionFactory中獲取的SqlSessionTemplate的實例。
- 自動掃描您的mappers,將它們鏈接到SqlSessionTemplate並將其注冊到Spring上下文,以便將它們注入到您的bean中。
pom.xml重要內容如下:
<!-- mybatis-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- MySQL 連接驅動依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2.application.yml中添加配置
application.yml中添加數據源和mybatis的配置,內容如下:
spring:
#數據源
datasource:
url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
#mybatis配置
mybatis:
typeAliasesPackage: com.example.springboot.mybatisxml.entity
mapperLocations: classpath:mapper/*.xml
config-location: classpath:mybatis-config.xml
3.添加User的映射文件
UserMapper.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.example.springboot.mybatisxml.dao.mapper.UserMapper" >
<resultMap id ="UserMap" type="com.example.springboot.mybatisxml.entity.User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="password" property="password"/>
<result column="des" property="des"/>
</resultMap>
<select id = "queryAllUsers" resultType= "com.example.springboot.mybatisxml.entity.User">
select * from user
</select>
</mapper>
4.添加dao接口
接口的名字和映射文件的名字相同,接口中方法的名字和要調用的映射文件中的標簽的id相同。
UserMapper.java代碼如下:
public interface UserMapper {
List<User> queryAllUsers();
}
5.添加訪問控制層
UserController代碼如下:
/**
* UserController
*
* @Author: java_suisui
*
*/
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查詢 所有用戶
*
*/
@GetMapping("/queryAllUsers")
public List<User> queryAllUsers(){
return userService.queryAllUsers();
}
}
四、測試
本地打開瀏覽器,訪問http://localhost:8080/user/queryAllUsers,成功后返回如下結果:
[{"id":1,"name":"張三","password":"123456","sex":0,"des":"無備注"},
{"id":2,"name":"李四","password":"123456","sex":0,"des":"無備注"}]
到此SpringBoot整合Mybatis(XML配置方式)的功能已經全部實現,有問題歡迎留言溝通哦!
完整源碼地址: https://github.com/suisui2019/springboot-study
推薦閱讀
5.SpringBoot中如何靈活的實現接口數據的加解密功能?
限時領取免費Java相關資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高並發分布式、大數據、機器學習等技術。
關注下方公眾號即可免費領取: