mybatis中以字符串为条件如何准确查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中以字符串为条件如何准确查询相关的知识,希望对你有一定的参考价值。

参考技术A <select id="SelectUser" parameterType="String"
resultType="co.jp.nec.model.SDA_MB_KensaHantei">
SELECT * FROM User WHERE userId=#value
</select>
参考一下
望采纳!本回答被提问者采纳

Mybatis简单使用

Mybatis 映射文件

  • #{id} ,该形式是采用数据库预处理形式传入查询参数,在SQL中以? 标示,是一个参数占位符

  • ${column} 字符串替换,Mybatis不会对传入的参数进行转义,缺点是有SQL注入的危险

//常规查询
@Select("select * from user where id = #{id}")
User findById(@Param("id") long id);

@Select("select * from user where name = #{name}")
User findByName(@Param("name") String name);

//Mybatis用${column}进行字符串替换,一句即可替代多句SQL查询语句
@Select("select * from user where ${column} = #{value}")
User findByColumn(@Param("column") String column, @Param("value") String value);
  • association 关联元素,处理有一个类型关系,一对一

    • 关联的select查询,有N+1 问题(你执行了一个单独的 SQL 语句来获取结果的一个列表(就是“+1”)对列表返回的每条记录,你执行一个 select 查询语句来为每条记录加载详细信息(就是“N”)),解决方案,延迟加载
    • 关联的嵌套查询,将查询结果封装在结果集(resultMap),在association标签体中嵌套resultMap。一对多 情况时,可一使用多个accociation标签,标签体内用columnPrefix属性区别不同的resultMap。从Mybatis3.2.3版本开始可以使用resultSets属性,处理这个问题
  • collection 集合

    • 集合的嵌套Select查询 ofType 属性用来将JavaBean字段的属性类型和集合存储类型区分开来
    • 集合的嵌套结果映射
    • 多结果集(ResultSet)

缓存

  • 默认开启一级缓存,只对一个会话中的数据进行缓存
  • 开启二级缓存,SQL映射文件中添加<cache/> 标签

动态SQL

  • if
  • choose (when, otherwise)
  • trim (where, set)

以上是关于mybatis中以字符串为条件如何准确查询的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 使用IN 关键字

Mybatis简单使用

mybatis动态order by 排序问题 2021-09-17

MyBatis学习 之 四动态SQL语句

mybatis 参数判断条件

如何解决mybatis在xml中传入Integer整型参数为0时查询条件失效问题?亲测有效