从controller 到mapper.xml的传值,及其mybatis中$ 与#的区别

一、 $ 和 #的区别:

规则一:能使用 ${ } 的地方就能用 #{ }
规则二:表名作为变量时,必须使用 ${ }
参考链接


二、 单一参数传值:

异常问题:“There is no getter for property named 'num' in 'class java.lang.String'。”
解决方法:无论参数名,都要改成"_parameter"。

<update id="updateDbTName" parameterType="String" statementType="STATEMENT">      <!--   statementType:STATEMENT(非预编译)-->
        RENAME TABLE HELLO TO  ${_parameter} ;
</update>

三、 MyBatis多参数传递之混合方式:

1、多参数的混合参数传值:
  • Map传多参数.
  • 基本语法:
Map<String, Object> getPRParams2 = new HashMap<String, String>();
    getPRParams2.put("idPard", 2);
    getPRParams2.put("dbName", fileName);
    parkRecMapper.getParkRecsByIdPark(getPRParams2);```
+ [Mybatis传多个参数(三种解决方案--第一种尝试不行)](http://www.2cto.com/database/201409/338155.html)


#####2、有对象的混合参数传值:
controller端:

Map<String, Object> updatePR = new HashMap<String, Object>();
updatePR.put("obj", parkRecords_1.get(i));
updatePR.put("dbName", fileName);
parkRecMapper.updateParkRec(updatePR);

mapper端:
> (#{obj.timeOut})取值


<update id="updateParkRec" >
update ${dbName} set time_out=#{obj.timeOut} ,
dateTime_out=FROM_UNIXTIME(floor((#{obj.timeOut})10)+57600,'0000-00-00 %k:%i:%s'),
dateTime_in=FROM_UNIXTIME(floor((#{obj.timeIn})
10)+57600,'0000-00-00 %k:%i:%s'),```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,622评论 0 4
  • 11 MyBatis一级缓存实现# 11.1 什么是一级缓存? 为什么使用一级缓存?## 每当我们使用MyBati...
    七寸知架构阅读 10,891评论 12 143
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 风狂雨骤杨花残, 红断香消谁肯怜? 不忍花落莺归去, 暂教梁燕寄相思。
    宅了一冬阅读 136评论 2 0