1. MyBatis 中#{}和${}的区别
#{}
: 解析为一个 JDBC 预编译语句(PreparedStatement )的参数标记符,一个 #{ } 代表一个占位符 ,可预防大部分 SQL 注入${}
: 纯粹的 String 拼接,在动态 SQL 解析阶段将会进行变量替换,当需要传入表名或者按照列排序时可使用
2. MyBatis-plus 的字段非 null 更新
使用 Mapper 通过 bean 对象更新数据库记录的时候,字段更新的策略会影响更新的结果,mybatis-plus的字段默认策略是 FieldStrategy.NOT_NULL
。该特性可在数据库表映射生成的 bean 的属性上通过以下注解使用
@TableField(value = "FstrLoanOrder",updateStrategy = FieldStrategy.NOT_EMPTY)
private String loanOrder;
public class GlobalConfig implements Serializable {
......
/**
* 字段验证策略之 insert
*
* @since 3.1.2
*/
private FieldStrategy insertStrategy = FieldStrategy.NOT_NULL;
/**
* 字段验证策略之 update
*
* @since 3.1.2
*/
private FieldStrategy updateStrategy = FieldStrategy.NOT_NULL;
/**
* 字段验证策略之 select
*
* @since 3.1.2
*/
private FieldStrategy selectStrategy = FieldStrategy.NOT_NULL;
}
}
public enum FieldStrategy {
/**
* 忽略判断
*/
IGNORED,
/**
* 非NULL判断, bean 对象属性为 NULL 则不更新对应表字段
*/
NOT_NULL,
/**
* 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
*/
NOT_EMPTY,
/**
* 默认的,一般只用于注解里
* <p>1. 在全局里代表 NOT_NULL</p>
* <p>2. 在注解里代表 跟随全局</p>
*/
DEFAULT,
/**
* 不加入 SQL
*/
NEVER
}