MyBatis使用记录

        一、#与$的区别

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

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

        二、MyBatis查询MySQL的时间段

        以下语句用于查询中时间的比较,#{startTime}=

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

你可能感兴趣的:(mybatis,mybatis,mysql)