使用springboot如何集成mybatis?其实很简单,四部曲,而这些步骤大部分都是通法。无论是集成mybatis,还是jsp,mvc甚至是redis数据库等等,都是同样的步骤,只不过细节有所不同。
首先我们要确定目录结构是一致的,否则配置的即使都是相同的文件,但它并不能成功读取也是徒劳,这里mapper里放的是接口,也有习惯用dao的,无伤大雅:
目录结构对了,下面进入正题:
1、pom文件加入依赖
这里要提一点,让一个maven工程成为springboot工程,其实就是加入了springboot工程的父类,如果建立的就是springboot工程,只是帮你完成了这些依赖的加入,并且springboot有一个父类工程里都整合好了一些常用的依赖。 这里阿里连接池的可以使用只需在后面yml文件中加入一点配置即可,后文会写到。
<modelVersion>4.0.0</modelVersion>
<groupId>com.yj</groupId>
<artifactId>springboot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--使用alibaba连接池需要依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2、yml文件和mybatis-config.xml的配置
server:
port: 8080
spring:
datasource:
username: root
password: yjhandsome
url: jdbc:mysql://localhost:3308/webtest?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
#这里是使用alibaba的的连接池配置
type: com.alibaba.druid.pool.DruidDataSource
druid:
max-active: 20
min-idle: 10
initial-size: 10
mybatis:
type-aliases-package: com.yj.pojo
config-location: classpath:/mybaits/mybatis-config.xml
# 这里是用注解方式sql语句,所以不用配置mapper.xml
# mapper-locations: classpath:mybatis/mapper/*Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
3、配置Mapper接口,这里使用注解的方式加入sql语句,所以上一步yml配置文件里不需要mapper.xml。
@Mapper表示这个Mapper接口是我们需要找的,但是如果有很多接口,每个都要加上@Mapper,所以可以在第四步中增加一个通法,这里就不需要了
//@Mapper
public interface UserMapper {
@Select("select * from user")
List<User> queryUserPage();
@Select("select * from user where id = #{id}")
User queryUserById(int id);
}
4、启动类配置,配置@SpringBootApplication表示这是个启动类,配置@MapperScan("com.yj.mapper"),表示到这个包中寻找需要的Mapper接口。
@SpringBootApplication
@MapperScan("com.yj.mapper")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
以上配置完了就大功告成了,在controller中写个方法,然后运行启动类,最后在页面直接请求方法即可。如下:
//@Controller
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/queryAll")\
// @ResponseBody
private List<User> queryAll() {
List<User> queryUser = userService.queryUser();
return queryUser;
}
@RequestMapping("/queryUserById/{shit}")
//@ResponseBody
private User queryUserById(@PathVariable("shit")int id) {
User u = userService.queryUserById(id);
return u;
}
}