User user=new User();
user.setUser(“yang yang”);
user.setAge(23);
user.setPass(“123”);
user.setSex(“man”);
user.setId(6);
// 注意:这里的updateById方法的参数是一个对象
int count=userMapper.updateById(user);
System.out.println(count);
}
数据库级别
代码级别
编写处理器来处理注解
这样的话,在执行插入和更新操作时,会将数据的updateTime和inserTime字段的值进行自动插入和更新
/*
如果不想每次都写private
final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;
- */
@Slf4j
@Component
public class MyMetaHandler implements MetaObjectHandler {
// 插入时的策略
@Override
public void insertFill(MetaObject metaObject) {
log.info(“start inserfill…”);
this.setFieldValByName(“createTime”,new Date(),metaObject);
this.setFieldValByName(“updateTime”,new Date(),metaObject);
}
//更新时的策略
@Override
public void updateFill(MetaObject metaObject) {
log.info(“start updatefill…”);
this.setFieldValByName(“updateTime”,new Date(),metaObject);
}
}
编写Configuration配置类
@Configuration
public class mybatisplusConfig {
// 注册乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
}
模拟线程插队的更新操作
User user=userMapper.selectById(8); //version=2
user.setUser(“kuangsheng”);
// 模拟插队线程的操作
User user1=userMapper.selectById(8);
user1.setUser(“kuangsheng111”);
userMapper.updateById(user1); //version=3
/*
下面这句查询其实为 select* from user where version =2
(但数据库并没有version=2的数据,所以就会导致更细失败!)
因为上面的操作将version变成3了,这就是乐观锁的机制
*/
int count=userMapper.updateById(user); //如果没有乐观锁,则改端代码的结果会 覆盖 插队线程的操作
批量查询
List userList=userMapper.selectBatchIds(Arrays.asList(1,2,3));
userList.forEach(System.out::println);
多条件查询
Map<String,Object> map=new TreeMap<>();
map.put(“user”,“李福”);
List userList= userMapper.selectByMap(map);
System.out.println(userList);
分页查询
1.配置拦截器组件
// 配置分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
测试
//curren:当前页 size:每页数据条数
Page page=new Page<>(1,5);
userMapper.selectPage(page,null);
List userList=page.getRecords();
userList.forEach(System.out::println);
}
单个删除
int count=userMapper.deleteById(7);
if (count>0){
System.out.println(“删除成功!!!”);
}
批量删除
int count=userMapper.deleteBatchIds(Arrays.asList(5,6));
if (count>0){
System.out.println(“批量删除成功!!!”);
}
通过map删除
Map<String,Object> map=new HashMap<>();
map.put(“user”,“liifu”);
map.put(“user”,“cyh”);
int count=userMapper.deleteByMap(map);
if(count>0){
System.out.println(“删除成功!!”);
}
逻辑删除
1.数据库增加一个deleted字段
2.pojo类增加对应deleted字段
@TableLogic
private int deleted; // 0:未删除 1:删除
3.编写Config配置
注意:3.3.1开始不在需要这一步了
在这里插入代码片
4.配置文件(application.yml)
#配置日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#逻辑删除
global-config:
db-config:
logic-delete-value: 1 #即删除为1
logic-not-delete-value: 0 #未删除为0
测试
int count=userMapper.deleteById(4);
if (count>0){
System.out.println(“删除成功!!!”);
}
删除后再次查询(看能否查出该数据)
平时查询sql语句时可能会遇见一些查询比较耗时的操作。而mybatis-plus提供了性能分析插件(当超过某个时间,他就会停止执行)
适用于写一些执行复杂查询的sql语句
QueryWrapper queryWrapper=new QueryWrapper<>();
// 查询 age>=21 sex=“man” version=1 的信息
queryWrapper.ge(“age”,21).eq(“sex”,“man”).eq(“version”,1);
List userList =userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
区间查询
QueryWrapper wrapper=new QueryWrapper<>();
// 区间查询
wrapper.between(“age”,21,23);
int count=userMapper.selectCount(wrapper);
System.out.println(count);
查询结果数(即符合条件的条数)
QueryWrapper wrapper=new QueryWrapper();
最后
现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**
6bif54yq54yq5L6geXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
区间查询
QueryWrapper wrapper=new QueryWrapper<>();
// 区间查询
wrapper.between(“age”,21,23);
int count=userMapper.selectCount(wrapper);
System.out.println(count);
查询结果数(即符合条件的条数)
QueryWrapper wrapper=new QueryWrapper();
最后
现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**
[外链图片转存中…(img-s4HJcwgE-1719283753681)]