Spring Boot集成MyBatis
目录
- 1、说明
- 2、集成步骤
- 2.1、pom.xml 引入依赖
- 2.2、src/resources/application.yml 配置文件
- 2.3、src/resources/mybatis-config.xml
- 2.4、src/resources/mapper/EmpMapper.xml
- 2.5、src/main/com/cnblogs/javalouvre/domain/Emp.java
- 2.6、src/main/com/cnblogs/javalouvre/mapper/EmpMapper.java
- 2.7、Service类
- 2.8、src/main/com/cnblogs/javalouvre/web/IndexController.java
- 2.9、src/main/com/cnblogs/javalouvre/App.java
- 3、目录结构
1、说明
本教程采用Spring Boot 2.2.11.RELEASE自带的hikari高性能连接池,兼具分页查询数据功能。
2、集成步骤
2.1、pom.xml 引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.11.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
2.2、src/resources/application.yml 配置文件
spring:
datasource:
# 数据类型,默认com.zaxxer.hikari.HikariDataSource
type: com.zaxxer.hikari.HikariDataSource
# 数据库连接URL
url: jdbc:mysql://127.0.0.1:3306/hikari?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# 驱动,MySQL的驱动包
driver-class-name: com.mysql.cj.jdbc.Driver
# 连接数据库用户名
username: hikari
# 连接数据库密码
password: 4dGMZMPHt4k3ESzA
# 指定Hikari数据源详细配置
hikari:
auto-commit: true
# 测试查询SQL
connection-test-query: SELECT 1
# 连接建立超时时间(单位:ms),默认30秒
connection-timeout: 30000
# 连接超时释放时间,默认10分钟
idle-timeout: 60000
# 连接最大存活时间,默认30分钟
max-lifetime: 540000
# 最大连接池数量
maximum-pool-size: 10
# 最小闲置连接数
minimum-idle: 5
# PageHelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
# MyBatis相关配置
mybatis:
# 搜索指定包别名
type-aliases-package: com.cnblogs.javalouvre.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapper-locations: classpath*:mapper/*.xml
# 加载全局的配置文件
config-location: classpath:mybatis-config.xml
# 日志
logging:
level:
'[org.mybatis]': DEBUG
'[org.springframework]': DEBUG
'[com.cnblogs.javalouvre]': DEBUG
2.3、src/resources/mybatis-config.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>
<settings>
<setting name="cacheEnabled" value="true" /> <!-- 全局映射器启用缓存 -->
<setting name="useGeneratedKeys" value="true" /> <!-- 允许 JDBC 支持自动生成主键 -->
<setting name="defaultExecutorType" value="REUSE" /> <!-- 配置默认的执行器 -->
<setting name="logImpl" value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 -->
</settings>
</configuration>
2.4、src/resources/mapper/EmpMapper.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.cnblogs.javalouvre.mapper.EmpMapper">
<resultMap type="Emp" id="EmpResult">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="sex" column="sex" />
<result property="salary" column="salary" />
<result property="createTime" column="create_time" />
</resultMap>
<select id="listAll" parameterType="Emp" resultMap="EmpResult">
SELECT `id`, `name`, `sex`, `salary`, `create_time` FROM `emp` ORDER BY `id` ASC
</select>
</mapper>
2.5、src/main/com/cnblogs/javalouvre/domain/Emp.java
package com.cnblogs.javalouvre.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
public class Emp {
private Integer id;
private String name;
private Integer sex;
private BigDecimal salary;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
public Emp() {
}
public Emp(String name, Integer sex, BigDecimal salary) {
this.name = name;
this.sex = sex;
this.salary = salary;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public BigDecimal getSalary() {
return salary;
}
public void setSalary(BigDecimal salary) {
this.salary = salary;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.append("sex", getSex())
.append("salary", getSalary())
.append("createTime", getCreateTime())
.toString();
}
}
2.6、src/main/com/cnblogs/javalouvre/mapper/EmpMapper.java
package com.cnblogs.javalouvre.mapper;
import com.cnblogs.javalouvre.domain.Emp;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface EmpMapper {
/**
* 查询所有数据
*
* @return
*/
List<Emp> listAll();
}
2.7、Service类
2.7.1、src/main/com/cnblogs/javalouvre/service/IEmpService.java
package com.cnblogs.javalouvre.service;
import com.cnblogs.javalouvre.domain.Emp;
import java.util.List;
public interface IEmpService {
List<Emp> listAll();
}
2.7.2、src/main/com/cnblogs/javalouvre/service/impl/EmpServiceImpl.java
package com.cnblogs.javalouvre.service.impl;
import com.cnblogs.javalouvre.domain.Emp;
import com.cnblogs.javalouvre.mapper.EmpMapper;
import com.cnblogs.javalouvre.service.IEmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("empService")
public class EmpServiceImpl implements IEmpService {
@Override
public List<Emp> listAll() {
return empMapper.listAll();
}
@Autowired
private EmpMapper empMapper;
}
2.8、src/main/com/cnblogs/javalouvre/web/IndexController.java
package com.cnblogs.javalouvre.web;
import com.cnblogs.javalouvre.domain.Emp;
import com.cnblogs.javalouvre.service.IEmpService;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class IndexController {
@GetMapping(path = "index", produces = MediaType.APPLICATION_JSON_VALUE)
public List<Emp> list(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
return empService.listAll();
}
@Autowired
private IEmpService empService;
}
2.9、src/main/com/cnblogs/javalouvre/App.java
package com.cnblogs.javalouvre;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
3、目录结构
.
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── cnblogs
│ │ └── javalouvre
│ │ ├── App.java
│ │ ├── domain
│ │ │ └── Emp.java
│ │ ├── mapper
│ │ │ └── EmpMapper.java
│ │ ├── service
│ │ │ ├── IEmpService.java
│ │ │ └── impl
│ │ │ └── EmpServiceImpl.java
│ │ └── web
│ │ └── IndexController.java
│ └── resources
│ ├── application.yml
│ ├── mapper
│ │ └── EmpMapper.xml
│ └── mybatis-config.xml
└── test
└── java
-----------------------------------------------------------------------------------------------------------
薔薇猛虎皆成個性,陽光雨露俱是天恩!
薔薇猛虎皆成個性,陽光雨露俱是天恩!
浙公网安备 33010602011771号