参考资料:
1、设置不缓存每次查询的结果:
如题,通过设置 flushCache="true" useCache="false" 两个属性来达到目的。
flushCache | 将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false。 |
useCache | 将其设置为true,将会导致本条语句的结果被缓存。默认值:true。 |
2、返回类型的设置:
resultType、resultMap不可同时使用(虽然都指定这两个属性时不会报错)。
前者将数据库表的字段名映射成指定的字段名,并封装成指定的对象;后者将数据库表字段名映射成返回类型里同名字段,若有些字段在返回类型里没有对应字段则可能出错。
3、insert语句返回自增主键值
方法之一是在insert标签里加上useGeneratedKeys="true", keyProperty="addedTime" 这两个属性,其中addedTime是传入参数之一,插入后返回的最新主键值将赋给该变量,程序中就可以通过该传入参数获得新主键值。
4、MyBatis SQL语句中 foreach的使用
相关资料:
示例如下。foreach可对三种对象做循环,分别为List,[](array),Map三种。collection指出相对哪个元素做循环,item循环中的具体对象,index指序号(List、数组中)或key(map中)。
insert into post_img (pid,img_order,img_location) values ( #{postId},#{index},#{item} )
5、关于#{}和${}
默认情况下,前者有占位符的效果,使用#{}语法,MyBatis会产生PreparedStatement语句,并且安全地设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义;而后者则是直接拼接,传入什么就是什么。示例如下:
执行SQL:Select * from emp where name = #{employeeName}参数:employeeName=>Smith解析后执行的SQL:Select * from emp where name = ?并设置参数为 'Smith'执行SQL:Select * from emp where name = ${employeeName}参数:employeeName传入值为:Smith解析后执行的SQL:Select * from emp where name =Smith
总的来说:$y=2x+x^2$
${}方式会引发SQL注入的问题,同时也会影响SQL语句的预编译,所以从安全性和性能的角度出发,能使用#{}的情况下就不要使用 \${}
而对于动态表名、动态字段、排序字段,则只能使用${}才能达到预期的功能。注意:当使用${}参数作为字段名或表名时,需要指定statementType=STATEMENT,而使用#{}时不能有该语句
6、MyBatis使用like查询:select * from person where name like "%"#{name}"%"
7、MyBatis批量插入:
1 23 insert into 4 train_journey 5 ( 6 user_id, 7 local_journey_id, 8 begin_time, 9 end_time,10 journey_type,11 begin_latitude,12 end_latitude,13 begin_longitude,14 end_longitude,15 driving_mode,16 duration,17 rapid_acc_times,18 rapid_turn_times,19 acc_score,20 turn_score,final_score21 )22 values23 25 (26 #{userId},27 #{item.localJourneyId},28 #{item.beginTime},29 #{item.endTime},30 #{item.journeyType},31 #{item.beginLatitude},32 33 #{item.endLatitude},34 #{item.beginLongitude},35 #{item.endLongitude},36 #{item.drivingMode},37 #{item.duration},38 39 #{item.rapidAccTimes},40 #{item.rapidTurnTimes},41 #{item.accScore},42 #{item.turnScore},43 #{item.finalScore}44 )45 46
8、MyBatis批量查询
1 2