毕设的学习(8) spring boot mybatis 动态sql
https://blog.csdn.net/wangb_java/article/details/73657958
http://www.blogjava.net/dbstar/archive/2011/08/08/355825.html
https://blog.csdn.net/qq_36872046/article/details/80291939
Map<String, String> conditionMap = new HashMap<>();
conditionMap.put("material_user_name", "Tst");
controller里设置map
/**
* 根据查询条件查询材料
* @param condition 前端传入的条件,通过内部类进行拼接sql语句
* @return 材料List
*/
@SelectProvider(type=MaterialsDaoProvider.class,method = "getMaterialsByCondition")
List<Materials> getAllByCondition(Map condition);
class MaterialsDaoProvider{
public String getMaterialsByCondition(Map condition) {
return new SQL(){{
SELECT("*");
FROM("materials");
WHERE("material_user_name like '%"+condition.get("material_user_name")+"%'");
}}.toString();
}
}
也可以先把condition里的值取出来
class MaterialsDaoProvider{
public String getMaterialsByCondition(Map condition) {
Object material_user_name = condition.get("material_user_name");
return new SQL(){{
SELECT("*");
FROM("materials");
if (null != material_user_name){
WHERE("material_user_name like '%${material_user_name}%'");
}
}}.toString();
}
}
如果使用这种模糊查找,不能使用#{material_user_name}
必须使用$
#是起的占位符的作用,但是写在了字符串里面无法起到占位符的作用,这是我们要用 $
欢迎大家关注我的微信公众号,获取你不知道的宝藏。