一、AR模式
AR模式简单的说就是直接用实体操作数据库
需要两步,首先继承 Model 类
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; @Data //@EqualsAndHashCode(callSuper = false) public class User extends Model<User> { }
然后需要存在可以使用的Mapper
public interface UserMapper extends BaseMapper<User> { }
满足条件后可以使用实体类进行数据库操作,我认为使用 Mapper 就足够了
@SpringBootTest public class ARTest { @Test public void insert() { User user = new User(); user.setName("章草"); user.setAge(24); user.setEmail("ZC@baomidou.com"); user.setManagerId(1087982257332887553L); user.setCreateTime(new Date()); boolean flag = user.insert(); System.out.println(flag); } @Test public void selectById() { User user = new User(); User user1 = user.selectById(1352099043086524417L); System.out.println(user == user1);// false System.out.println(user1); } @Test public void selectById2() { User user = new User(); user.setId(1352099043086524417L); User user1 = user.selectById(); System.out.println(user == user1);// false System.out.println(user1); } @Test public void updateById() { User user = new User(); user.setId(1352099043086524417L); user.setName("章草草"); boolean flag = user.updateById(); System.out.println(flag); } @Test public void deleteById() { User user = new User(); user.setId(1352099043086524417L); boolean flag = user.deleteById(); System.out.println(flag); } @Test public void insertOrUpdate() { User user = new User(); user.setName("张华"); user.setAge(24); user.setEmail("zh@baomidou.com"); user.setManagerId(1087982257332887553L); user.setCreateTime(new Date()); // 没有设置主键,则插入到数据库 // 如果设置了主键,首先根据主键查询记录是否存在,存在则更新,不存在则新增 boolean flag = user.insertOrUpdate(); System.out.println(flag); } }
二、MP支持的主键策略
1、局部主键策略
@TableId(type= IdType.ID_WORKER) private Long id;
2、全局主键策略
# Mybatis Plus配置 mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml global-config: db-config: id-type: id_worker
三、基本配置
官网介绍,内容很多,官网中文描述很详细
四、通用Service
在实际开发中,service 可以继承 ServiceImpl,来对 service 功能进行扩展,其中的批量操作给我们带来很大的方便
package com.mp.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mp.dao.UserMapper; import com.mp.entity.User; import org.springframework.stereotype.Service; @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> { }
使用lambda的代码演示
@SpringBootTest public class ServiceTest { @Autowired private UserServiceImpl userServiceImpl; @Test public void chain(){ List<User> list = userServiceImpl.lambdaQuery().gt(User::getAge, 25).like(User::getName, "雨").list(); list.forEach(System.out::println); } @Test public void chain1(){ boolean update = userServiceImpl.lambdaUpdate().eq(User::getAge, 25).set(User::getAge, 26).update(); System.out.println(update); } @Test public void chain2(){ boolean remove = userServiceImpl.lambdaUpdate().eq(User::getAge, 25).remove(); System.out.println(remove); } }