Python编程:从入门到实践 实验课记录(python编程从入门到实践答案)
2308
2022-07-26
目录mapper.xml中if标签test判断的用法1. 字符串等于条件的两种写法2. 非空条件的判断3. 判断数组是否包含某个元素mapper.xml
mapper.xml中if标签test判断的用法
1. 字符串等于条件的两种写法
① 将双引号和单引号的位置互换
AND 表字段 = #{testString}
② 加上.toString()
AND 表字段 = #{testString}
2. 非空条件的判断
长久以来,我们判断非空非null的判断条件都是如下所示:
但是这样的判断只是针对String的,如果是别的类型,这个条件就不一定成立了,比如最经典的:当是数字0时,这个判断就会把0过滤掉,所以如果要判断数字,我们一般会再加上一个0的判断(这和mybatis的源码逻辑有关,有兴趣的可以去看看源码)
但是如果传进来的是数组或者集合呢?我们要再写别的判断吗?能不能封装个方法呢?
答案是可以的。
if标签里面的test判断是可以使用工具类来做判断的,毕竟test后面跟的也是一个布尔值,其用法是:
例如:
下面是我写的一个简陋的工具类,不是很全面,抛砖引玉,各位可以根据需要补充。
import java.util.Collection;
import java.util.Map;
/**
TySGMut* @description: mybatis的
* 使用方式:
* @author: singleDog
* @date: 2020/7/20
*/
public class MybatisTestUtil {
public static boolean isEmpty(Object o) {
if (o == null) {
return true;
}
if (o instanceof String) {
return ((String) o).trim().length() == 0;
} else if (o instanceof Collection) {
http:// return ((Collection) o).isEmpty();
} else if (o instanceof Map) {
TySGMutreturn ((Map) o).isEmpty();
} else if (o.getClass().isArray()) {
return ((Object[]) o).length == 0;
} else {
return false;
}
}
public static boolean isNotEmpty(Object o) {
return !isEmpty(o);
}
}
3. 判断数组是否包含某个元素
//...
注意,元素类型是字符串的话,参考1中的写法,一般这样写
//...
//...
mapper.xml
1. 分页
map中添加了两个int类型的数据,
map.put("startNum",(page.getPageNum()-1)*page.getNumPerPage());
map.put("pageSize",page.getNumPerPage());
错误的SQL书写:
LIMIT #{startNum},#{pageSize}
正确的SQL书写
LIMIT #{startNum},#{pageSize}
因为startNum里存的是int数据,所以不能与空字符串进行比较,强行比较时会报错。
2. 字符串形式的数据比较
map中添加的是一个字符串形式的“1”
map.put("uploadFlag",upload.getUploadFlag());
如果想在XML中比较,以下两种方式都可以:
2.1 test使用双引号
比较的对象使用单引号点toString()方法:
and pw.id in (select pw_id from t_contract_upload)
2.2 test使用单引号
比较的对象直接使用双引号:
and pw.id in (select pw_id from t_contract_upload)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~