一文带你入门MyBatis Plus
一文带你入门MyBatis Plus
- 1.环境准备
- 2.加入日志功能
- 3.通用CRUD操作
- 4.自定义功能
1.环境准备
创建测试数据库user表:
创建SpringBoot工程,导入Maven依赖:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.15</version>
</dependency>
之后配置druid数据源:
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
编写Mapper接口类,继承BaseMapper
(MyBatis - plus自带的接口集合):
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
现在来测试一下吧:
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
// 查询所有用户
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
查询成功!
2.加入日志功能
在SpringBoot配置文件加入如下的配置即可开启MybatisPlus日志功能:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
之后再次查询,就可以看到SQL语句执行的一些日志了:
3.通用CRUD操作
添加功能演示:
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
User user = new User();
user.setAge(18);
user.setName("大河");
user.setEmail("339@qq.com");
int insert = userMapper.insert(user);
System.out.println("insert:" + insert);
}
数据添加成功:
删除功能演示:
通过id删除数据:
@Test
void contextLoads() {
int i = userMapper.deleteById(1);
System.out.println(i);
}
通过map删除数据:
@Test
void contextLoads() {
// 删除名字为wewe,年龄为12的数据
HashMap<String, Object> map = new HashMap<>();
map.put("name", "wewe");
map.put("age", 12);
int i = userMapper.deleteByMap(map);
System.out.println(i);
}
==> Preparing: DELETE FROM user WHERE name = ? AND age = ?
==> Parameters: wewe(String), 12(Integer)
<== Updates: 1
批量删除演示:
@Test
void contextLoads() {
List<Integer> list = Arrays.asList(3, 4);
int i = userMapper.deleteBatchIds(list);
System.out.println(i);
}
==> Preparing: DELETE FROM user WHERE id IN ( ? , ? )
==> Parameters: 3(Integer), 4(Integer)
<== Updates: 2
修改功能演示:
通过id修改数据:
@Test
void contextLoads() {
User user = new User();
user.setId(6L);
user.setName("lisilisi");
int i = userMapper.updateById(user);
System.out.println(i);
}
==> Preparing: UPDATE user SET name=? WHERE id=?
==> Parameters: lisilisi(String), 6(Long)
<== Updates: 1
查询功能演示:
通过id查询数据:
@Test
void contextLoads() {
User user = userMapper.selectById(6);
System.out.println(user);
}
==> Preparing: SELECT id,name,age,email FROM user WHERE id=?
==> Parameters: 6(Integer)
<== Columns: id, name, age, email
<== Row: 6, lisilisi, 23, 1111@qq.com
<== Total: 1
通过id查询多条记录:
@Test
void contextLoads() {
List<Integer> list = Arrays.asList(5, 6);
List<User> users = userMapper.selectBatchIds(list);
users.forEach(System.out::println);
}
==> Parameters: 5(Integer), 6(Integer)
<== Columns: id, name, age, email
<== Row: 5, dada, 11, 111@qq.com
<== Row: 6, lisilisi, 23, 1111@qq.com
<== Total: 2
map条件查询:
@Test
void contextLoads() {
HashMap<String, Object> map = new HashMap<>();
map.put("id", 5);
map.put("name", "dada");
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
==> Preparing: SELECT id,name,age,email FROM user WHERE name = ? AND id = ?
==> Parameters: dada(String), 5(Integer)
<== Columns: id, name, age, email
<== Row: 5, dada, 11, 111@qq.com
<== Total: 1
4.自定义功能
MyBatisPlus只提供了简单的单表查询接口,要想实现复杂的查询甚至优化,我们还是需要使用自定义的Mapper XML文件
来演示一下:
Mapper接口中:
@Mapper
public interface UserMapper extends BaseMapper<User> {
Map<String, Object> selectMapById(Long id);
}
编写Mapper接口类的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.klza.mapper.UserMapper">
<select id="selectMapById" resultType="map">
select id,name,age,email from user where id = #{id}
</select>
</mapper>
来测试一下吧:
@Test
void contextLoads() {
Map<String, Object> map = userMapper.selectMapById(6L);
System.out.println(map);
}