使用MyBatis-Plus遇到一个问题,就是使用updateById()、update()做更新的时候,我想要把字段更新成NULL,但是却发现是不行的,更新成其他非NULL的值却是可以的。 问题原因 mybatis-plus中有一个字段更新(也有新增等)策略,FieldStrategy, 有三种策略: IGNORED:0 忽略 NOT_NULL:1 非 NULL,默认策略 NOT_EMPTY:2 非空 而默认更新策略是NOT_NULL:非 NULL;即通过接口更新数据时数据为NULL值时将不更新进数据库。 解决方…

2022-12-31 0条评论 56点热度 0人点赞 admin 阅读全文

如题,在MyBatisPlusMapper种写SQL语句,需要用到in语法,in里面的内容是一个list通过变量传入的,mapper里面需要组装出sql语句来,可以使用foreach来实现,示例代码如下: <select id="listLabIdsByServiceCatIds" resultType="java.lang.Long"> select * from t_test where 1=1 <if test="serviceCatIds != null and serviceCatIds…

2022-11-12 0条评论 68点热度 0人点赞 admin 阅读全文

例如班级表(Clazz)-和学生表(Student)的关系是一对多的关系,我们希望在加载一个班级的时候,能自动加载这个班级下的学生列表。 Java实体类如下(学生实体类省略): @TableName("t_class") public class Clazz implements Serializable { @TableId private Long id; private Date createDate;// private Date updateDate; private String name;//班级名称…

2022-10-22 0条评论 86点热度 0人点赞 admin 阅读全文

例如这样的场景:学生和班级是多对一的关系,我们在查询学生(Student)的时候,(t_student表有一个clazz_id会对应到t_clazz表的ID),希望自动带出这个学生所属的班级(Clazz) 多方(Student)的Mapper.xml: 注意这里使用了association来表明Student下面的有对应一的属性:clazz(这个学生所属班级) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//my…

2022-10-19 0条评论 247点热度 0人点赞 admin 阅读全文

今天在使用MyBatis时候,someMapper.selectById() 或者其他CRUD时候,抛出异常: aused by: java.lang.IndexOutOfBoundsException: Index: 14, Size: 14 at java.util.ArrayList.rangeCheck(ArrayList.java:659) at java.util.ArrayList.get(ArrayList.java:435) at org.apache.ibatis.executor.result…

2022-10-14 0条评论 188点热度 0人点赞 admin 阅读全文

使用MyBatis很多时候需要新建MapperXML文件,希望有一个比较方便的方式(例如新建Java文件,就是Project的点右键新增的菜单里有),我们也希望在那个菜单里出现MyBatis的Mapper文件。 操作步骤如下所示: 设置Preferences -> 编辑器Editor -> 文件和代码模板File and Code Templates,点击+加号按钮,创建一个新的模板文件,如图所示: 其中,需要输入模板文件的名称(MyBatis Mapper),以及后缀名填写为:xml。 模板文件的内容…

2022-10-07 0条评论 88点热度 0人点赞 admin 阅读全文

MyBatis的PageHelper是非常好用的分页插件,本人用下来比MyBatisPlus的更加灵活,例如可以指定offset limit的方式进行分页等等。 如果是Spring下配置PageHelper需要配置拦截器(而且是xml的方式),详见:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md,SpringBoot下有更简单的方式,有专门的boot-starter,只需要引入一个pom依赖,就全部可…

2022-08-08 0条评论 136点热度 0人点赞 admin 阅读全文

MyBatis原生状态下将数据分页或者使用offset/limit方式对数据做限制行数,如果没有limit写在SQL的时候,想要分页,使用的是。 这种方式,没有使用使用PageHelper插件的时候,是使用的逻辑分页,数据量大的时候,直接把大量数据从数据库取回来再分页,造成OOM,千万要谨慎使用,例子如下: # 注意这种方式非常不推荐使用,只是反例 List<Student> list = studentMapper.listStudents(new RowBounds(0, 10)); 以上显然是不行…

2022-06-09 0条评论 513点热度 0人点赞 admin 阅读全文

QueryWrapper下每增加一行条件,默认每个条件是and且的关系,如果要增加一个条件,这个条件下所有的关系是或者(or),就是这个条件下的子条件之前是or,外部用and,增加一个括号,括号中用or 可以用如下方式 QueryWrapper<User> userWrapper = new QueryWrapper<>(); userWrapper.eq("type", "admin"); String keys = (String) map.get("key"); if(StringUt…

2022-04-02 0条评论 277点热度 0人点赞 admin 阅读全文