MyBatis是一款開源的持久層框架,它極大地簡化了與數據庫的交互流程。與類似Hibernate的ORM框架不同,MyBatis更具靈活性,允許開發者直接使用SQL語句與數據庫進行交互。Spring Boot和MyBatis分別是兩個功能強大的框架,它們的協同使用可以極大地簡化數據訪問層的開發,提高整體的開發效率。本文將詳細介紹在Spring Boot項目中如何集成MyBatis,以實現對數據庫的輕松訪問和操作。
添加依賴
Spring Boot 3 發布后,Mybatis Starter相對應的mybatis-spring-boot-starter
版本為3.x
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>
添加配置文件
常用的mybatis配置如下所示:
mybatis:mapper-locations: classpath:mybatis/**/*Mapper.xmltype-aliases-package: cn.xj.xjdoc.**.entityconfiguration:map-underscore-to-camel-case: true
參數說明:
-
mybatis.mapper-locations:指定MyBatis的Mapper XML文件的位置。
-
mybatis.type-aliases-package:指定MyBatis的類型別名包,即包含實體類的包路徑,方便在xml配置文件中使用實體類時不用寫包名。
-
mybatis.configuration.map-underscore-to-camel-case:開啟或關閉駝峰命名法的自動映射功能。true表示開啟,將數據庫字段的下劃線風格(例如,user_name)自動映射為Java實體類的駝峰命名風格(例如,userName)。
創建實體類和Mapper接口
創建一個實體類,表示數據庫中的表,然后創建一個Mapper接口,用于定義數據庫操作的方法。示例:
實體類SysUser:
@Data
public class SysUser {private String userName;private String account;
}
Mapper接口SysUserMapper:
@Mapper
public interface SysUserMapper {List<SysUser> listUser();
}
如果我們在啟動類上使用了 @MapperScan
注解,就可以批量掃描 MyBatis 的 Mapper 接口所在的包,并將這些接口注冊為 MyBatis 的映射器。在這種情況下,Mapper 接口本身就不再需要使用 @Mapper
注解來明確標識其為 MyBatis 的 Mapper 接口了。
@SpringBootApplication
@MapperScan("cn.xj.xjdoc.**.mapper")
public class XjdocApplication {public static void main(String[] args) {SpringApplication.run(XjdocApplication.class, args);}}
創建Mapper XML文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.xj.xjdoc.system.mapper.SysUserMapper"><select id="listUser" resultType="SysUser">select * from sys_user</select>
</mapper>
最后,運行你的Spring Boot應用程序,并確保沒有錯誤發生。訪問相關端點,測試數據庫操作是否正常。
總結
總體而言,Spring Boot集成MyBatis為開發者提供了一套高效而又易于維護的數據庫訪問方案。通過合理的配置和良好的代碼組織,我們能夠快速搭建出健壯可靠的數據訪問層,為整個應用的開發打下堅實基礎。