SqlBuffer sql=new SqlBuffer();
sql.append("select");
sql.append(" A.UserId UserId");
sql.append(" ,A.UserName UserName");
sql.append(" ,A.LoginName LoginName");
sql.append(" ,A.PassWord PassWord");
sql.append(" ,A.Sex Sex");
sql.append(" ,A.Birthday Birthday");
sql.append(" ,A.Post Post");
sql.append(" ,A.education education");
sql.append(" ,A.Telephone Telephone");
sql.append(" ,A.Mail Mail");
sql.append(" ,A.Photo Photo");
sql.append(" ,A.IsUsed IsUsed");
sql.append("from");
sql.append(" SysUser A");
sql.append("where");
sql.append(" (1=1)");
if(sysUser!=null){
if(!CommFunc.isEmpty(sysUser.getUserName())){
sql.append(" and (A.UserName like CONCAT('%',:userName,'%'))");
}
if(!CommFunc.isEmpty(sysUser.getLoginName())){
sql.append(" and (A.LoginName like CONCAT('%',:loginName,'%'))");
}
}
return query(sql.toString(),sysUser,SysUser.class,page);
上面的是代码,我重写了query方法,会在执行查询语句过程中,通过传入的对象把对象中的属性值赋给SQL语句中的和属性名相同的参数。不用like的情况下是没有问题的,。但是类似于上面的like语句就出现似乎like中的:userName这个命名参数获取到的是空字符串。网上也查了一下,很多都是直接把参数值夹在SQL语句中。我想问一下,MySql中like情况如何使用命名参数?
https://zhidao.baidu.com/question/562290443.html
参加这篇文章。http://blog.csdn.net/xiazdong/article/details/6884218
上面两位的回复,总结起来就是mysql中不能用使用命名参数的方式直接替换为值,必须拼接后才能替换。
两位也许看过oracle的like用命名参数是怎么写的:
like ‘%’|| :userName ||‘%’;
我的意思就是想问,Mysql能不能实现这种直接用值替换命名参数,而不用先拼接好,再替换的方式。