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

  1.   
 
最近学习了mybatis,并用ssm框架(Spring,Springmvc,mybatis)搭建项目。使用mybatis的好处就不多说了,请自行查找。

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

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

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

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

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

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

  1. Preparing:select ?,?,?,? from teacherinfo   
 Preparing:select ?,?,?,? from teacherinfo 
  1. Parameters: tno(String), tname(String), tbirthday(String), tage(String)  
 Parameters: tno(String), tname(String), tbirthday(String), tage(String)
 
 

这下就不明白了,这样看着也没有错啊。于是么,有去苦心研究去了。突然看到一篇文章写的 #{} 和 ${}  的区别;
原来 #{} 就是一个占位符  所以看到了是一个个?的存在。在处理接受的字段名是就会当做字符串处理加上引号  所以查询sql语句就成了

  1. select "tno" , "tname" , "tbirthday" , "tage" from teacherinfo   
select "tno" , "tname" , "tbirthday" , "tage" from teacherinfo 

这样查出来的不是字段名才奇了怪了呢
然后果断换成${}  这次就发现果然没毛病了

  1. Preparing: select tno , tname , tbirthday , tage from teacherinfo   
 Preparing: select tno , tname , tbirthday , tage from teacherinfo 

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


http://blog.csdn.net/kobi521/article/details/16941403


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值