0.准备工作:
-
创建数据库表User
CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `role` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
-
新建的SpringBoot项目::Springboot项目快速创建
1.导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2.编写配置文件application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/company?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 1041370063
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.编写实体类User
public class User {
private Integer id;
private String username;
private String password;
private String role;
}
4.编写UserMapper
@Repository
public interface UserMapper extends BaseMapper<User> {
}
5.在启动类MybaitsplusApplication上加上注解
@MapperScan("com.wantl.mapper")
6.数据库Id自增
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {
@TableId(type = IdType.AUTO) //手动输入改为INPUT
private Integer id;
private String username;
private String password;
private String role;
}
7.增删改查代码
@SpringBootTest
class MybaitsplusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void testInsert(){
User user=new User();
user.setUsername("wantl");
user.setPassword("wantl");
user.setRole("super");
int result=userMapper.insert(user);
System.out.println(result);
}
@Test
void testUpdate(){
User user=new User();
user.setId(6);
user.setUsername("wan");
int result=userMapper.updateById(user);
System.out.println(result);
}
@Test
void testSelectById(){
User user=userMapper.selectById(1);
System.out.println(user);
}
@Test
void testSelectByBatchIds(){
List<User> users=userMapper.selectBatchIds(Arrays.asList(1,3,4));
users.forEach(System.out::println);
}
@Test
void testSelectByMap(){
HashMap<String,Object> map=new HashMap<>();
map.put("role","super");
map.put("username","wan");
List<User> users=userMapper.selectByMap(map);
users.forEach(System.out::println);
}
@Test
void testDelectById(){
userMapper.deleteById(5);
}
@Test
void testDelectByBatchIds(){
userMapper.deleteBatchIds(Arrays.asList(1,3,4));
}
@Test
void testDelectByMap(){
HashMap<String,Object> map=new HashMap<>();
map.put("role","super");
userMapper.deleteByMap(map);
}
}
8.Service层可以继承IService接口,具体方法文末有官方链接
9.自动填充处理
-
实体类User新增属性,数据库新增字段
@TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
-
编写处理器
@Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime",new Date(),metaObject); } }
10.分页查询
-
配置拦截器插件
public class MyBatisPlusConfig { public PaginationInnerInterceptor paginationInnerInterceptor(){ return new PaginationInnerInterceptor(); } }
-
测试分页查询
@Test public void testpage(){ Page<User> page=new Page<>(1,5); userMapper.selectPage(page,null); page.getRecords().forEach(System.out::println); }
11.逻辑删除
-
在数据库中增加deleted字段
-
在实体类增加属性
@TableLogic private Integer deleted;
-
在application.propeties中加入配置
mybatis-plus.global-config.db-config.logic-delete-field=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0
12.条件构造器Wrapped
@SpringBootTest
public class WrapperTest {
@Autowired
private UserMapper userMapper;
void testquery01(){
QueryWrapper<User> wrapper=new QueryWrapper<User>();
wrapper.isNotNull("role");//条件
userMapper.selectList(wrapper).forEach(System.out::println);
}
void testquery02(){
QueryWrapper<User> wrapper=new QueryWrapper<User>();
wrapper.eq("username","wan");//条件
User user= userMapper.selectOne(wrapper);
System.out.println(user);
}
void testquery03(){
QueryWrapper<User> wrapper=new QueryWrapper<User>();
wrapper.between("create_time","2012-02-01","2021-02-01");//条件
Integer count=userMapper.selectCount(wrapper);
System.out.println(count);
}
void testquery04(){
QueryWrapper<User> wrapper=new QueryWrapper<User>();
wrapper.notLike("username","h").likeRight("role","超");
List<User> users=userMapper.selectList(wrapper);
System.out.println(users);
}
}
15.项目实例