博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis使用小记
阅读量:6218 次
发布时间:2019-06-21

本文共 2899 字,大约阅读时间需要 9 分钟。

参考资料:

 

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 
2
3 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
View Code

 8、MyBatis批量查询

1     
2
View Code

 

转载地址:http://htoja.baihongyu.com/

你可能感兴趣的文章
Java 的 LinkedList 的底层数据结构
查看>>
MySQL查询性能优化(精)
查看>>
【monkey测试】Fragment not attached to Activity
查看>>
【游船费问题 - 动态规划】
查看>>
C语言基础第四次作业
查看>>
Nginx reverse proxy NSQAdmin
查看>>
linux的安装和克隆
查看>>
Linux软连接和硬链接(摘录)
查看>>
git 简介
查看>>
spring applicationContext.xml和hibernate.cfg.xml设置
查看>>
Balanced Binary Tree
查看>>
# 2017-2018-2 20155319『网络对抗技术』Exp6:信息收集与漏洞扫描
查看>>
操作系统常见面试笔试题目
查看>>
UVA 489 Hangman Judge
查看>>
nuxt https
查看>>
Linux运维之系统性能---vmstat工具分析内存的瓶颈
查看>>
(转) android UI进阶之布局的优化(二)
查看>>
PHP Strict standards:Declaration of … should be compatible with that of…(转)
查看>>
打卡2
查看>>
js实现3D切换效果
查看>>