MyBatis单个参数的动态语句引用
来源:互联网 发布:java 访问者模式 编辑:程序博客网 时间:2024/04/30 00:45
在使用mybatis的动态sql时,有时需要根据参数值来动态拼接mysql,比如下面的示例:
根据出版社和作者查询图书列表,如果为空则不做该条件过滤(注:此处有2个参数)
public void getBookList(String publisher,String author){ Map<String,Object> maps = new HashMap<String, Object>(); maps.put("publisher", publisher); maps.put("author", author); this.getListByEntity("getBookList",maps);}
<select id="getBookList" resultType="Book"> SELECT * FROM bookinfo <where> <if test="publisher != null"> publisher = #{publisher} </if> <if test="author != null"> AND author = #{author} </if> </where></select>
如上写法,是没有问题的,但是当情况变得简单的时候,比如只根据作者查询图书列表的时候,当然我们可以采用和上面相同的处理方法,在方法中将参数封装到map中去。但是当我们直接使用String作为参数来查询时,就需要注意一个问题:
public void getBookList(String author){ this.getListByEntity("getBookListByAuthor",author);}
<select id="getBookListByAuthor" parameterType="java.lang.String" resultType="Book"> SELECT * FROM bookinfo <where> <if test="author != null"> author = #{author} </if> </where></select>
看似没有问题,当我们运行的时候,报异常了,原因是当我们的参数为String时,在sql语句中#{author} 会去我们传进来的参数调getAuthor()方法获取参数,很明显,String没有对应的方法,所以报错了,那我们这里要如何引用author对象呢,需要采用下面的写法:
<select id="getBookListByAuthor" parameterType="java.lang.String" resultType="Book"> SELECT * FROM bookinfo <where> <if test="_parameter != null"> AND author = #{author} </if> </where></select>
结论:当mybatis传参为单个参数时,在sql语句中需要使用_parameter 来引用这个参数
- MyBatis单个参数的动态语句引用
- MyBatis: SQL语句中传入单个String类型的参数的获取
- mybatis的动态语句
- MyBatis SQL语句动态传入参数作表名。
- mybatis传递单个string参数
- mybatis的动态SQL语句
- MyBatis的动态语句使用
- MyBatis的动态语句使用
- mybatis的动态sql语句
- 使用基于注解的mybatis实现根据参数动态生成sql语句
- MyBatis动态语句及利用Map类来传递参数
- ssm的mybatis的动态SQL语句
- mybatis传入单个或多个参数
- mybatis的动态SQL语句用法
- 配置Mybatis的动态sql语句
- MyBatis中动态SQL语句的书写
- 关于mybatis动态SQL语句的写法
- mybatis 参数处理,单个参数,多个参数
- 图片旋转缩放翻转效果
- stored to '*' during its initialization is never read
- 设置UITextField的左边距
- 脚本实现查看表空间使用情况
- Hadoop MapReduce之ReduceTask任务执行(三)
- MyBatis单个参数的动态语句引用
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS openURL不能打开网页
- 慢慢征途的第一步.....
- eclipse部署web项目至本地的tomcat但在webapps中找不到
- 食品打码机
- C++中的new与delete简单浅析
- Linux Shell高级技巧(二)
- URL 问号传值页面及后台处理方法。