MyBatis知识点总结

271 阅读1分钟

mybatis json 字段

@TableName(value = "", autoResultMap = true)
@TableField(value = "", typeHandler = JacksonTypeHandler.class)
<result column="" property="" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>

XML映射中,SQL语句的两种参数注入方法:#和$的区别?

  • #{}可以防止Sql 注入,它会将所有传入的参数作为一个字符串来处理。
  • ${}则将传入的参数拼接到Sql上去执行,一般用于表名和字段名参数,${}所对应的参数应该由服务器端提供,前端可以用参数进行选择,避免 Sql 注入的风险。

XML映射中,如何使用LIKE进行模糊查询?

使用concat('%', #{name}, '%')

XML映射中,如何批量插入传入的集合(Collection<E>)?

接口:

public int insertBatch(@Param("list") List<User> list);

mapper:

<insert id="insertBatch" parameterType="com.zwh.project.entity.User">
    INSERT INTO user (name, password, sex, age)
    VALUES
    <foreach collection ="list" item="user" separator =",">
        (#{user.name}, #{user.password}, #{user.sex}, #{user.age})
    </foreach >
</insert>

XML映射中,如何在插入的同时获取MySQL自增字段(AUTO_INCREMENT)的生成值?

在insert 标签中添加两个属性 useGeneratedKeys="true" keyProperty="id",插入完后,即可在实体类中获取到自增的值。