您的位置:首页 > 数据库

传值设置mybatis查询的 列名(字段名),以及如何查看mybatis中执行的SQL语句

2017-11-26 15:12 746 查看
最近学习了mybatis,并用ssm框架(Spring,Springmvc,mybatis)搭建项目。使用mybatis的好处就不多说了,请自行查找。

由于本人的mybatis是属于看着视频速成的那种,所以遇到了很多坑。废话不多说了,开始正题:

但是今天遇到一个问题,在导出表格的时候,由于导出的数据不固定,所以需要动态的传入查询表的字段名。问题虽简单,但对于我这种小白来说就有些困扰。

于是一开始就使用了那种中规中矩的方式来写:

<selectid="expoertExcel"parameterType="java.util.List"resultType="TeacherInfo">
   select 
   <foreachcollection="list"item="item"index="index"separator=",">
      #{item}
   </foreach>
   fromteacherinfo
</select>
咋一看没啥问题啊,怎么看都对。然而在打开导出的excel表格时就出现了坑爹的情况。导出的信息全部是字段名字,没有一条真正的数据。

这就尴尬了,啥情况啊?想来想去就想到了查看 mybatis执行的SQL语句,经过一番搜索,很容易找到通过日志打印SQL脚本。

就是通过配置log4j配置文件查看SQL。这时就能看到在控制台输出了信息

Preparing:select?,?,?,?fromteacherinfo
Parameters:tno(String),tname(String),tbirthday(String),tage(String)



这下就不明白了,这样看着也没有错啊。于是么,有去苦心研究去了。突然看到一篇文章写的#{}和${} 的区别;

原来#{}就是一个占位符 所以看到了是一个个?的存在。在处理接受的字段名是就会当做字符串处理加上引号 所以查询sql语句就成了

select"tno","tname","tbirthday","tage"fromteacherinfo
这样查出来的不是字段名才奇了怪了呢

然后果断换成${} 这次就发现果然没毛病了

Preparing:selecttno,tname,tbirthday,tagefromteacherinfo
不过呢虽然实现了,数据库就不安全了。所以尽量不要使用${}

http://blog.csdn.net/kobi521/article/details/16941403
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis sql
相关文章推荐