Mybatis-Plus
一、简介
官方文档:https://baomidou.com/pages/24112f/
二、入门案例
1、开发环境
IDE:idea
JDK:JDK8+
构建工具:maven
数据库:MySQL
SpringBoot
MyBatis-Plus
2、创建数据库以及表
创建数据库表
3、创建Spring Boot工程
a>初始化工程
添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
配置数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username: root
password:
创建实体类
package com.kj.mybatisplus.pojo;
import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
创建接口
package com.kj.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kj.mybatisplus.pojo.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
测试
package com.kj.mybatisplus;
import com.kj.mybatisplus.mapper.UserMapper;
import com.kj.mybatisplus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class MybatisplusTest {
@Autowired UserMapper userMapper;
@Test
public void test(){
//通过条件构造器查询一个list集合,若没有条件,则可以设置为null
List<User> list = userMapper.selectList(null);
list.forEach(System.out::println);
}
}
添加日志
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username: root
password:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
==> Preparing: SELECT id,name,age,email FROM user
==> Parameters:
<== Columns: id, name, age, email
<== Row: 1, Jone, 18, test1@baomidou.com
<== Row: 2, Jack, 20, trst2@baomidou.com
<== Row: 3, Tom, 28, test3@baomidou.com
<== Row: 4, Sandy, 21, test4@baomidou.com
<== Row: 5, Billie, 24, test5@baomidou.com
<== Total: 5
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@c2e3264]
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=trst2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)
三、功能
新增
@Test
public void testInsert(){
User user = new User(null,"张三",23,"zhangsan@baomidou.com");
int result = userMapper.insert(user);
System.out.println("result:"+result);
System.out.println("userid:"+user.getId());
}
/*
==> Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1643803350057201666(Long), 张三(String), 23(Integer), zhangsan@baomidou.com(String)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@642505c7]
result:1
userid:1643803350057201666
*/
删除
@Test
public void testDelete(){
//通过id删除
int result = userMapper.deleteById(1643803350057201666L);
System.out.println("result:"+result);
}
/*
==> Preparing: DELETE FROM user WHERE id=?
==> Parameters: 1643803350057201666(Long)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d9f64c9]
result:1
*/
@Test
public void testDelete(){
//通过map来删除
Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("age",23);
int result = userMapper.deleteByMap(map);
System.out.println("result"+result);
}
/*
==> Preparing: DELETE FROM user WHERE name = ? AND age = ?
==> Parameters: 张三(String), 23(Integer)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4339e0de]
result1
*/
@Test
public void testDelete(){
//通过多个id实现批量删除
List<Long> list = Arrays.asList(4L, 5L);
int result = userMapper.deleteBatchIds(list);
System.out.println("result"+result);
}
/*
==> Preparing: DELETE FROM user WHERE id IN ( ? , ? )
==> Parameters: 4(Long), 5(Long)
<== Updates: 2
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21ac5eb4]
result2
*/
修改
@Test
public void testUpdate(){
//根据id修改用户信息
User user = new User();
user.setId(1L);
user.setName("Lili");
user.setAge(15);
int result = userMapper.updateById(user);
System.out.println("result"+result);
}
/*
==> Preparing: UPDATE user SET name=?, age=? WHERE id=?
==> Parameters: Lili(String), 15(Integer), 1(Long)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@61d84e08]
result1
*/
查询
@Test
public void testSelect(){
//根据id查询
User result = userMapper.selectById(1L);
System.out.println("result"+result);
}
/*
==> Preparing: SELECT id,name,age,email FROM user WHERE id=?
==> Parameters: 1(Long)
<== Columns: id, name, age, email
<== Row: 1, Lili, 15, test1@baomidou.com
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@52d6cd34]
resultUser(id=1, name=Lili, age=15, email=test1@baomidou.com)
*/
@Test
public void testSelect(){
//根据多个id查询多个用户信息
List<Long> list = Arrays.asList(1L, 2L, 3L, 4L);
List<User> result = userMapper.selectBatchIds(list);
result.forEach(System.out::println);
}
/*
==> Preparing: SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? , ? )
==> Parameters: 1(Long), 2(Long), 3(Long), 4(Long)
<== Columns: id, name, age, email
<== Row: 1, Lili, 15, test1@baomidou.com
<== Row: 2, Jack, 20, trst2@baomidou.com
<== Row: 3, Tom, 28, test3@baomidou.com
<== Row: 4, 张三, 23, zhangsan@baomidou.com
<== Total: 4
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6428591a]
User(id=1, name=Lili, age=15, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=trst2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=张三, age=23, email=zhangsan@baomidou.com)
*/
@Test
public void testSelect(){
//根据map查询
Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("age",23);
List<User> result = userMapper.selectByMap(map);
result.forEach(System.out::println);
}
/*
==> Preparing: SELECT id,name,age,email FROM user WHERE name = ? AND age = ?
==> Parameters: 张三(String), 23(Integer)
<== Columns: id, name, age, email
<== Row: 4, 张三, 23, zhangsan@baomidou.com
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@c2e3264]
User(id=4, name=张三, age=23, email=zhangsan@baomidou.com)
*/
@Test
public void testSelect(){
//根据id查询
// User result = userMapper.selectById(1L);
// System.out.println("result"+result);
//根据多个id查询多个用户信息
// List<Long> list = Arrays.asList(1L, 2L, 3L, 4L);
// List<User> result = userMapper.selectBatchIds(list);
// result.forEach(System.out::println);
//根据map查询
// Map<String,Object> map = new HashMap<>();
// map.put("name","张三");
// map.put("age",23);
// List<User> result = userMapper.selectByMap(map);
// result.forEach(System.out::println);
//查询所有数据
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
/*
==> Preparing: SELECT id,name,age,email FROM user
==> Parameters:
<== Columns: id, name, age, email
<== Row: 1, Lili, 15, test1@baomidou.com
<== Row: 2, Jack, 20, trst2@baomidou.com
<== Row: 3, Tom, 28, test3@baomidou.com
<== Row: 4, 张三, 23, zhangsan@baomidou.com
<== Row: 5, 李四, 24, lisi@baomidou.com
<== Total: 5
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@57c47a9e]
User(id=1, name=Lili, age=15, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=trst2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=张三, age=23, email=zhangsan@baomidou.com)
User(id=5, name=李四, age=24, email=lisi@baomidou.com)
*/
自定义功能
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 根据id查询用户信息,返回map
* @param id
* @return
*/
Map<String,Object> selectMapById(Long id);
}
<?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">
<!--namespace=绑定一个对应的Dao/Mapper接口-->
&