SpringBoot整合MyBatis
一、SpringBoot整合MyBatis
1.1、在pom.xml文件中引入mybatis所需要的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
1.2、配置数据库连接信息
spring:
datasource:
username: root
password: xbh123
url: jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
1.3、测试连接
@SpringBootTest
class SpringbootJdbcApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//看一下默认数据源
System.out.println(dataSource.getClass());
//获得连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
DruidDataSource druidDataSource = (DruidDataSource) dataSource;
System.out.println("druidDataSource 数据源最大连接数:" + druidDataSource.getMaxActive());
System.out.println("druidDataSource 数据源初始化连接数:" + druidDataSource.getInitialSize());
//关闭连接
connection.close();
}
}
class com.alibaba.druid.pool.DruidDataSource
com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@3a7b2e2
druidDataSource 数据源最大连接数:20
druidDataSource 数据源初始化连接数:5
1.4、创建对应的实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String username;
private String password;
private String email;
}
1.5、创建mapper目录以及对应的 Mapper 接口
//@Mapper : 表示本类是一个 MyBatis 的 Mapper
@Mapper
@Repository
public interface UserMapper {
//获取所有的用户
List<User> queryUserList();
User queryUserById();
int addUser(User user);
int updateUser(User user);
int deleteUser(int id);
}
- 也可以在启动类上边加
@MapperScan("com.xbh.mapper")
@SpringBootApplication
@MapperScan("com.xbh.mapper")
public class SpringbootJdbcApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootJdbcApplication.class, args);
}
}
1.6、对应的Mapper映射文件(xxxMapper.xml)
统一的在resources下创建一个mybatis目录,在mybatis目录下在建一个mapper目录,用来存放xxxMapper.xml文件
在application.yml文件中整合mybatis
【这一步至关重要】
mybatis:
type-aliases-package: com.xbh.pojo #起别名
mapper-locations: classpath:mybatis/mapper/*.xml #映射到指定目录
- xxxMapper.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.xbh.mapper.UserMapper">
<insert id="addUser" parameterType="com.xbh.pojo.User">
insert into t_user (username,password,email)
values (#{username},#{password},#{email});
</insert>
<update id="updateUser" parameterType="com.xbh.pojo.User">
update t_user set username=#{username},password=#{password},email=#{email} where id=#{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id};
</delete>
<select id="queryUserList" resultType="com.xbh.pojo.User">
select * from t_user;
</select>
<select id="queryUserById" resultType="com.xbh.pojo.User">
select *
from t_user
where id=#{id};
</select>
</mapper>
1.7、测试
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/queryUser")
public List<User> queryUserList(){
List<User> users = userMapper.queryUserList();
return users;
}
@GetMapping("/addUser1")
public String addUser1(){
userMapper.addUser(new User("wangqianqian","123456789","987@qq.com"));
return "ok";
}
@GetMapping("/updateUser1/{id}")
public String updateUser1(){
userMapper.updateUser(new User("6666","456654","654@qq.com"));
return "ok";
}
@GetMapping("/deleteUser1")
public String deleteUser1(){
userMapper.deleteUser(19);
return "ok";
}
}