MyBatis的优化注意点
来源:互联网 发布:加购软件 编辑:程序博客网 时间:2024/05/16 07:55
我们在项目中经常会用到Mybatis,可是我们怎么才能灵活的应用mybatis,使我们的程序性能更好呢?接下来我们就来看看这几个点。
1、批量操作
我们经常会遇到对批量数据的操作,一般来说我们想的是利用循环,然后一个个处理。然而这样的处理效率并不高。mybatis给我们提供了批量操作的方法,让我们来看一下。
//批量插入<insert id="addTrainRecordBatch" parameterType="java.util.List"> insert into t_train_record (add_time,emp_id,activity_id,flag) values <foreach collection="list" item="item" index="index" separator="," > (#{item.addTime},#{item.empId},#{item.activityId},#{item.flag}) </foreach> </insert>
- foreach解析
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束,
- 注意Collection
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map
2、resultMap与resultType
在这儿我们要说明一下这两者关系,防止有人把他弄混。
resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key–>value关系)
- 对比
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
3、轻量化数据查询
如果我们涉及到多表查询的时候我们首先会想到什么?自然是连接查询,分为内连接和外连接,这里不再细说几种连接查询。
我们都知道连接查询要比in查询的效率要高,可是需要注意的是,如果我们是互联网企业,追求性能要高,采用分库分表,这样就要求我们要把一个连接查询拆成多条简单查询,此时用in就比较好了。
//内连接select name,age,userRow from user as u inner join rol as r on u.userId=r.userId//in(多条语句)select name,age,userRow from user where userId in (select userRow,userId from rol)
总结:
每个工具都有他试用的范围,需要根据我们的实际情况灵活应用。而且每个问题都有很多方法,我们要多思考那些简单、可用、高效的方法。不断思考,才能不断进步。
- MyBatis的优化注意点
- MyBatis IN操作的注意点
- mybatis注意点
- Mybatis 中的注意点
- mybatis二级缓存注意点
- Mybatis学习注意点
- 搜索引擎优化的7点注意要点
- mysql优化需要注意的点
- javaScript中优化的一些注意点
- Web前端优化需要注意的点
- 关于SQL优化的几个注意点
- 性能优化需要注意的点
- 程序优化注意的一些点
- 性能优化注意点
- 优化tableview注意点
- MyBatis初学注意点总结
- 【MyBatis-03】几个注意点
- mybatis if 动态生成SQL的一个注意点
- 使用Maven实现Struts2+Hibernate4+Spring3整合SSH框架(一):Maven项目创建
- 2.3.1 使用本地编译成功的镜像文件启动Android模拟器
- Tomcat优化
- android scaleType
- CODEFORCES 265C CODEFORCES, 265C
- MyBatis的优化注意点
- 异步消息的传递-回调机制
- 虚析构函数
- html5---拖放demo----拖放图片
- Hello World
- windows 32 eclipse 远程hadoop开发环境搭建
- 慕课网实战—《用组件方式开发 Web App全站 》笔记二
- mysql索引详解
- Codeforces 427C Checkposts (强连通分量 tarjan模板)