Mybatis

1.sqlSession

sqlSession.selectOne();    sqlSession.selectList();    

sqlSession.insert();    sqlSession.update();    sqlSession.delete();    

2.ResultMap

ResultMap是Mybatis中最重要最强大的元素使用ResultMap可以解决两大问题:

1)POJO属性名和表结构字段名不一致的问题(有些情况下也不是标准的驼峰格式)

2)完成高级查询,比如说一对一,一对多,多对多

2.sql片段、动态sql

java中,我们会将一些重复的代码封装起来,用的时候直接调用方法即可,

在Mybatis中也有类似的概念,就是sql片段,

方法一:用<sql id=" ">这里写sql语句</sql>,在需要的地方用<include refid=" "/>,refid中的值与sql标签中id的值一致。

另一种用法:将所有的公用sql片段集中到一个mapper.xml文件中,其他的文件如需使用就用命名空间.id

194957_sAqa_3676955.png

195006_T0hR_3676955.png

1)choose标签

choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

3.一级缓存

mybatis的一级缓存作用域是session,当openSession()后,如果执行的是同一句sql,mybatis将不再执行该sql,而是直接取缓存中命中返回。一级缓存默认开启,无法关闭。

4.二级缓存

mybatis的二级缓存作用域是一个mapper的namespace,同一个namespace中查询sql可以从缓存中命中,且可以跨session。

开启二级缓存:在mapper.xml中加入<cache />

注意:在Mybatis-config.xml中有缓存的全局控制器(cacheEnabled),默认开启,无需手动开启。

5.mapper.xml

写sql时select后面的列应该列出来,不能用*表示,因为mybatis无法识别*符号。

使用insert标签时,resultMap/resultType属性不应该是对象,因为insert语句返回的是受此sql语句影响的条数

6.mybatis 如何查找表里的某一个字段,然后返回它们的结果集list ?

<select id="findArgByParams" resultType="string" parameterType="map" > ,就能返回一个都是 string 的 list 

7.在执行下面语句时,若把${ids}换成#{ids},则查不出来记录

104916_RbvW_3676955.png

 

转载于:https://my.oschina.net/u/3676955/blog/1595323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值