MyBatis使用记录

        一、#与$的区别

        最近项目中使用MyBatis动态关联表,这就需要给表名动态赋值,刚开始使用#{tablename},却发现始终都无法成功,后来在网上找了一下,改为${tablename}才解决问题。究其原因,主要是因为#将传入的数据当成一个字符串,会对传入的数据自动加一个引号,而表名加引号是识别不到的。

        但是,一般情况下,能使用#就不要使用$,主要因为#能很大程度上防止sql注入,而$则无法防止sql注入;但是$方式一般用于传入数据库对象,例如传入表名;而且MyBatis排序时使用order by 动态参数时需要注意,用$而不是#。

        二、MyBatis查询MySQL的时间段

        以下语句用于查询中时间的比较,#{startTime}=<a.latestTime<=#{endTime},时间格式可以自定义,这是使用的是“年-月-日”

 <if test="startTime!=null and startTime!=''">
		<![CDATA[
		    and DATE_FORMAT(a.latestTime, '%Y-%m-%d') >=  DATE_FORMAT(#{startTime}, '%Y-%m-%d')
		]]>
	</if>
	<if test="endTime!=null and endTime!=''">
		<![CDATA[
      		and DATE_FORMAT(a.latestTime, '%Y-%m-%d') <=  DATE_FORMAT(#{endTime}, '%Y-%m-%d')
		]]>
	</if>
        三、MyBatis查询中like写法
select * from table where name  like "%"#{name}"%"
select * from table where name  like "%"||#{name}||"%"
select * from table where name  like "%${name}%"
        三种写法对比后,第一种属于预编译SQL,后两种都不是,因此推荐使用第一种写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值