Spring Boot 整合 MyBatis


前言

現在業界比較流行的數據操作層框架 MyBatis,下面就講解下 Springboot 如何整合 MyBatis,這里使用的是xml配置SQL而不是用注解。主要是 SQL 和業務代碼應該隔離,方便和 DBA 校對 SQL。

我的Git

https://github.com/JasperZXY/TestSpringCloud/tree/master/boot-feature

由於我很多功能放在同一個項目里面,所以代碼看起來沒有那么清晰,不過將就看還是可以的。

我的項目結構

src/
 +- main/
     +- java/
        +- zxy.demo.springboot.mybatis
			 +- entity
		     +- dao
		     +- web
		     |- MainApplicion.java
     +- resources/
			 +- mapper
			 |- application.properties
         

數據庫准備

數據庫用的是MySQL

CREATE DATABASE test_spring_boot;
CREATE TABLE `user` (
  `id` int(11) NOT NULL COMMENT '主鍵',
  `name` varchar(64) NOT NULL COMMENT '姓名',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `address` varchar(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mybatis-generator

如果沒有mybatis-generator,可以下載一個。
mybatis-generator的下載地址

使用mybatis-generator工具生成相關文件,實體對象、dao接口、xml文件。

pom.xml

添加必要的依賴

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<java.version>1.8</java.version>
	<mybatis-spring-boot.version>1.2.0</mybatis-spring-boot.version>
	<mysql-connector.version>5.1.39</mysql-connector.version>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>${mybatis-spring-boot.version}</version>
	</dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector.version}</version>
    </dependency>
</dependencies>

application.properties

打開 application.properties 文件, 修改相應的數據源配置,比如數據源地址、賬號、密碼等,如下

spring.datasource.url=jdbc:mysql://localhost:3306/test_spring_boot?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.typeAliasesPackage=zxy.demo.springboot.boot_feature.entity
mybatis.mapperLocations=classpath:mapper/*.xml

注意根據自己的實現項目目錄進行相應的修改。

  • mybatis.typeAliasesPackage:為實體對象所在的包,跟數據庫表一一對應
  • mybatis.mapperLocations:mapper文件的位置

dao

需要配置dao文件,也即操作數據表的接口。

通過@MapperScan注解進行dao文件的掃描,如下

// MyBatis 支持
@MapperScan("zxy.demo.springboot.mybatis.dao")
@SpringBootApplication
public class MainApplicion {

	public static void main(String[] args) throws Exception {
		SpringApplication.run(MainApplicion.class, args);
	}

}

controller

@RequestMapping("user")
@RestController
public class UserController {
	@Autowired
	private UserMapper userMapper;
	
	@GetMapping("/list/all")
	public Object listAll() {
		return userMapper.selectByExample(new UserExample());
	}

}

運行

右鍵運行 Application 應用啟動類的 main 函數,然后在瀏覽器訪問即可看到數據。

http://localhost:8080/user/list/all
[
	{
		id: 1,
		name: "張三",
		birthday: 1491667200000,
		address: "深圳"
	}
]

與SpringMVC整合MyBatis的區別

SpringMVC是通過xml進行配置,通過配置DataSource、SqlSessionFactoryBean、MapperScannerConfigurer來完成MyBatis的整合。
而SpringBoot是通過application.properties配置數據源、實體bean包名、mapper文件位置和@MapperScan注解來配置掃描的dao路徑,從而實現MyBatis的整合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM