根据情况生成不同的查询条件(in、like)

最后更新:2024-03-12 11:08:13 | 状态:未完成
场景与上一步一样。只是拼接的SQL更费代码一点
根据情况生成
SELECT * FROM HR_EMPLOYEE WHERE TYPE_CODE IN(?,?,?)
SELECT * FROM HR_EMPLOYEE WHERE NAME LIKE '?%'   ‘%?’ ‘%?%’ 等各种情况
  • anyline
  • ORM
  • 全部展开
【anyline】
  • 通过GET形式,http://localhost/list?type=1&type=2&type=3 
  • 通过GET形式,http://localhost/list?type=1,2,3 
  • 通过form提交 
  • 通过json形式{"type":["1","2","3"]}
//IN
DataSet set = service.querys("HR_EMPLOYEE", condition("TYPE_CODE:[types]"))

//LIKE
DataSet set = service.querys("HR_EMPLOYEE", condition("NAME:%name%"))
或
condition("NAME:%name")
condition("NAME:name%")
【ORM】

各种判断、遍历是少不了的,这种常用的功能应该是内置的,不明白为什么要浪费程序员时间
//IN 先在Java中接收types参数封闭成Collection格式

<if test="types != null and types.size > 0">
	and TYPE_CODE in 
	<foreach collection="types" item="type" open="(" separator="," close=")">
		#{type}
	</foreach>
</if>

 //LIKE 3种情况要挨个写一遍?是不是有更抽象的方法可以概括一下?这里的name如果有空格在if阶段是怎么处理的呢?

<if test="name != null  and name != ''"> and case_no  like concat('%',trim( #{name}),'%') </if>
<if test="name != null  and name != ''"> and case_no  like concat(trim( #{name}),'%') </if>
<if test="name != null  and name != ''"> and case_no  like concat('%',trim( #{name})) </if> 

首页 最近更新 搜索 提交 回复