在MyBatis的Mapper中,想执行多条SQL语句,这些语句已经在SQL的客户端中执行过没有任何问题的,但是写在Mapper中执行后,却总是报错,报错可能是(这是在Oracle数据库的报错,MySQL可能也是类似的): 1)invalid character<EOL><EOL> 2); bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束 MySQL…
在MyBatis的Mapper中,想执行多条SQL语句,这些语句已经在SQL的客户端中执行过没有任何问题的,但是写在Mapper中执行后,却总是报错,报错可能是(这是在Oracle数据库的报错,MySQL可能也是类似的): 1)invalid character<EOL><EOL> 2); bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束 MySQL…
在使用MybatisPlus开发的时候,在执行添加功能的时候,使用MP的id生成策略(ASSIGN_ID)生成的id是一个很长的long类型的数字。数字长其实还没事,问题是我后端返回的那串数字和前端拿到的数据不一致,前端axio请求后,ID后面几位的是00 经过研究,MyBatis-Plus 的 ASSIGN_ID 策略使用雪花算法生成一个 19 位的 Long 类型数值。当这个数值传到前端时,由于超过了 JavaScript 中数字的最大范围,导致最后两位始终为 0。 第一种方案是,在每个实体类的ID字段上加注解…
在使用LambdaQueryWrapper的时候,有时候会从前端(或者根据一些业务逻辑)传过来一个不确定的属性名,例如Person类中一个name属性,这个属性名需要加入到LambdaQueryWrapper的查询或者排序中去,LambdaQueryWrapper因为是Lambda的方式,只能传入SFunction,这就需要把name转成SFunction。 工具类如下(FunctionTools.java): public class FunctionTools { /** * 可序列化 */ private s…
在用MyBatis连接Oracle操作的时候,例如更新或者插入记录的时候,报错:java.sql.SQLException: Invalid column type: 1111 经查,需要在配置中将:jdbcTypeForNull设置成NULL,记录下,具体配置如下 xml配置: <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> <…
MyBatis中在XML写SQL,如果遇到特殊字符(例如大于等符号)需要转义或特别处理,因为要符合xml的约定。 原符号 < <= > >= & ' " 转义后符号 < <= > >= & ' " 例如:sql如下: select * from t_table where create_date >= #{startDate} and create_date &a…
使用MyBatis-Plus遇到一个问题,就是使用updateById()、update()做更新的时候,我想要把字段更新成NULL,但是却发现是不行的,更新成其他非NULL的值却是可以的。 问题原因 mybatis-plus中有一个字段更新(也有新增等)策略,FieldStrategy, 有三种策略: IGNORED:0 忽略 NOT_NULL:1 非 NULL,默认策略 NOT_EMPTY:2 非空 而默认更新策略是NOT_NULL:非 NULL;即通过接口更新数据时数据为NULL值时将不更新进数据库。 解决方…
如题,在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…
例如班级表(Clazz)-和学生表(Student)的关系是一对多的关系,我们希望在加载一个班级的时候,能自动加载这个班级下的学生列表。 Java实体类如下(学生实体类省略): @TableName("t_class") public class Clazz implements Serializable { @TableId private Long id; private Date createDate;// private Date updateDate; private String name;//班级名称…
例如这样的场景:学生和班级是多对一的关系,我们在查询学生(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…
今天在使用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…