Ibatis 动态条件SQL语句

在开发ibatis项目的时候 由于要写sql语句但是 实体xml中又无法通过参数拼接sql语句,导致同一张表不同条件的查询 删除等操作要写不同的sql语句会很麻烦。花了点时间找资料跟实践,发现ibatis也能实现对动态的对条件语句的拼接:


	
		delete
	
	
		select count(*)
	
	
		select *
	
	
		from DeviceInfo
		
			             
				
				id = #id#
			
			
				deviceId = #deviceId#
			
			
				displayModeId = #displayModeId#
			
			
				statuId = #statuId#
			
			
				manageId = #manageId#
			
			
				projectId = #projectId#
			
			
				creater = #creater#
			
			
				createTime = #createTime#
			
			
				updater = #updater#
			
			
				updateTime = #updateTime#
			
		
	
	
	
	
	
	
	
		
		
	

上面的代码中如果parameterClass传递过来的Map参数中,没有某一项条件所需要的参数那么久会生成不同的SQL语句

如:

public void deleteById(int id)
	{
		if (id != 0)
		{
			map.put("id", id);
			getSqlMapClientTemplate().delete("deleteByWhere", map);
		} else
		{
			System.out.println("delete error");
		}
	}
上述代码中Map中的key只有id那么 生成的sql语句为:

delete from DeviceInfo where id = (Map中的value)


其他属性:

1、二元条件元素的属性:
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
property - 被比较的属性(必选)
compareProperty - 另一个用于和前者比较的属性(必选或选择 compareValue)
compareValue - 用于比较的值(必选或选择 compareProperty)
比较属性值和静态值或另一个属性值是否相等。
比较属性值和静态值或另一个属性值是否不相等。
比较属性值是否大于静态值或另一个属性值。
比较属性值是否大于等于静态值或另一个属性值。
比较属性值是否小于静态值或另一个属性值。
比较属性值是否小于等于静态值或另一个属性值。


2、一元条件元素的属性:
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
property - 被比较的属性(必选)
检查是否存在该属性(存在 parameter bean 的属性) 。
检查是否不存在该属性(不存在 parameter bean 的属性) 。
检查属性是否为 null。
检查属性是否不为 null。
检查 Collection.size()的值,属性的 String 或 String.valueOf()值,
是否为 null或空( “”或size() < 1) 。
检查 Collection.size()的值,属性的 String 或 String.valueOf()值,
是否不为 null 或不为空( “”或 size() > 0)。


3、Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。

Iterate 的属性:
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
property - 类型为 java.util.List 的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)

遍历类型为 java.util.List的元素。



你可能感兴趣的:(Ibatis框架,Java)