博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis 单一参数时的动态语句
阅读量:5923 次
发布时间:2019-06-19

本文共 1297 字,大约阅读时间需要 4 分钟。

 

多参数时,可以传对象或封装成map
  1. public void getBookList(String publisher,String author){  
  2.          Map<String,Object> maps = new HashMap<String, Object>();  
  3.          maps.put("publisher", publisher);  
  4.          maps.put("author", author);  
  5.            
  6.          this.getListByEntity("getBookList",maps);  
  7. }  
 
 
  1. <select id="getBookList"  resultType="Book">  
  2.          SELECT * FROM bookinfo  
  3.          <where>  
  4.                    <if test="publisher != null">  
  5.                             publisher = #{publisher}  
  6.                    </if>  
  7.                    <if test="author != null">  
  8.                             AND author = #{author}  
  9.                    </if>  
  10.          </where>  
  11. </select>  
如上写法,是没有问题的,但是当情况变得简单的时候,比如只根据作者查询图书列表的时候,当然我们可以采用和上面相同的处理方法,在方法中将参数封装到map中去。但是当我们直接使用String作为参数来查询时,就需要注意一个问题:

 

 
  1. public void getBookList(String author){  
  2.   
  3.          this.getListByEntity("getBookListByAuthor",author);  
  4. }  
 单一参数时,这么写会报错
  1. <select id="getBookListByAuthor" parameterType="java.lang.String" resultType="Book">  
  2.          SELECT * FROM bookinfo  
  3.          <where>  
  4.                    <if test="author != null">  
  5.                             author = #{author}  
  6.                    </if>  
  7.          </where>  
  8. </select>  
看似没有问题,当我们运行的时候,报异常了,原因是当我们的参数为String时,在sql语句中#{author} 会去我们传进来的参数调getAuthor()方法获取参数,很明显,String没有对应的方法,所以报错了,那我们这里要如何引用author对象呢,需要采用下面的写法:

 

如下写法正解

 
  1. <select id="getBookListByAuthor" parameterType="java.lang.String" resultType="Book">  
  2.          SELECT * FROM bookinfo  
  3.          <where>  
  4.                    <if test="_parameter != null">  
  5.                             AND author = #{author}  
  6.                    </if>  
  7.          </where>  
  8. </select>  
结论:当mybatis传参为单个参数时,在sql语句中需要使用_parameter 来引用这个参数

 

转载于:https://www.cnblogs.com/siashan/p/5648847.html

你可能感兴趣的文章
CentOS 7.3 部署LVS + Keepalived 高可用集群
查看>>
零基础怎样进行大数据的入门级学习?
查看>>
由点及面分辨矿机性能
查看>>
python服务器环境搭建(3)——参数配置
查看>>
冷启动问题
查看>>
软件编程的那些事(1)-前言
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>
Part1——政府机构面临的安全威胁
查看>>
exp
查看>>
oracle教程之oralce非归档模式下的恢复(二)
查看>>
Oracle技术之普通库迁移至ASM存储
查看>>
Tomcat下Solr安装配置
查看>>
区块链3.0才能真正推动区块链时代大步向前!
查看>>
怎么去掉Xcode工程中的某种类型的警告
查看>>
希尔排序算法
查看>>
批量替换 MySQL 指定字段中的字符串
查看>>
mysql常见命令
查看>>
创建日志打印对象
查看>>
按Sybase的PowerDesigner工具设计的数据库模型 ---> 解析生成能兼容多种数据库的相应的C#底层代码...
查看>>
海思SDK Q&A
查看>>