原生MyBatis连接Mysql5,使用SpringBoot2默认的hikari连接池。
pom配置
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.0.RELEASE</version>
</parent>
<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>2.1.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
配置
server:
port: 8888
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC
username: root
password: root
# Hikari 连接池配置
hikari:
minimum-idle: 101
# 空闲连接存活最大时间,默认600000(10分钟)
idle-timeout: 180000
# 连接池最大连接数,默认是10
maximum-pool-size: 200
# 此属性控制从池返回的连接的默认自动提交行为,默认值:true
auto-commit: true
# 连接池名称
pool-name: MyHikariCP
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
max-lifetime: 1800000
# 数据库连接超时时间,默认30秒,即30000
connection-timeout: 30000
connection-test-query: SELECT 1
mybatis:
mapper-locations: classpath:mapper/*.xml
表结构
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
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.h.mybatis.mapper.UserMapper">
<!-- 配置插入后获取主键id的值 useGeneratedKeys必须定义为true(官方解释:允许JDBC支持自动生成主键,需要驱动兼容),keyProperty对应的是数据库表内字段-->
<insert id="saveUser" parameterType="com.h.mybatis.entity.User" keyProperty="id" useGeneratedKeys="true">
insert into t_user (name, age, address) VALUES (#{dto.name}, #{dto.age}, #{dto.address})
</insert>
<select id="getById" resultType="com.h.mybatis.entity.User">
select * from t_user where id = #{id}
</select>
</mapper>
实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class User implements Serializable {
private Long id;
private String name;
private Integer age;
private String address;
}
UserMapper.java
import com.h.mybatis.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserMapper {
void saveUser(@Param("dto") User user);
User getById(Long id);
}
Controller.java使用
@Controller
public class UserController {
@Resource
private UserMapper userMapper;
@ResponseBody
@GetMapping("test")
public User test(@RequestParam Long id) {
System.out.println("id = " + id);
User user = userMapper.getById(id);
return user;
}
}
启动类:
@Controller
@SpringBootApplication
public class Mybatis2020App {
public static void main(String[] args) {
SpringApplication.run(Mybatis2020App.class);
}
}