mybatis技术实践课程二

举报
tea_year 发表于 2022/02/18 13:48:20 2022/02/18
【摘要】 Mybatis – SelectKey属性 -描述:① keyProperty : selectKey 语句结果应该被设置的目标属性。② resultType:结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。③ order: 这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键...


Mybatis – SelectKey

属性 -描述:


① keyProperty : selectKey 语句结果应该被设置的目标属性。


② resultType:结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。


③ order: 这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。


④ statementType:和前面的相同,MyBatis 支持 STATEMENT ,PREPARED 和CALLABLE 语句的映射类型,分别代表PreparedStatement 和CallableStatement 类型。

Mapper文件详解

可配置标签:

select : 映射查询语句 
insert: 映射插入语句 
update:映射更新语句 
delete:映射删除语句 
sql:可被其他语句引用的可重用语句 (与 <include refid="" />联合使用)

resultMap:最复杂也是最强大的元素,用来描述如何从结果集中加载对象 
cache:给命名空间的缓存配置(不用了) 
cache-ref:其他命名空间缓存配置的引用(已经不用了) 
parameterMap:已经废弃,老式风格的参数映射  

标签的属性描述: 
1)id:命名空间中唯一的标识符,可以来引用该条语句 也是接口的方法名称
2)parameterType:这里设置传入该条语句的参数类的完全限定名或者普通java类型 
3)resultType:返回结果的类的完全限定名或者普通java类型 
4)resultMap:外部resultMap的命名引用,结果集的映射是Mybatis最强大的特性 
5)flushCache:如果设置为true,则任何时候该语句被调用,都会导致本地缓存和二级缓存都被清空。默认是false 
6)useCache:如果设置为true,将会导致本条语句的结果被二级缓存。默认是true 
7)timeout:抛出异常之前,驱动程序等待数据库返回请求结果的秒数 

Mybatis动态SQL


1:<where><if></if><if></if></where>


2:<set><if></if><if></if></set>(不常用,只有更新用)

3:<where><choose><when></when><otherwise></otherwise></choose></where>

4:foreach

foreach 也就是遍历迭代,在SQL中通常用在 in 这个关键词的后面


foreach元素的属性主要有 item,index,collection,open,separator,close。

分别代表:

item表示集合中每一个元素进行迭代时的别名,

index用于表示在迭代过程中,每次迭代到的位置,

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔 符,

close表示以什么结束


而最为重要的就是collection属性了,既然是迭代就表示传入的参数是多个,这时候传入的参数就有以下几种可能:

1. list

2. array

3. map

注: collection的值为ids,是传入的参数Map的key

TypesAlises

高级结果映射

多对一

注:在查询语句中添加主键字段(<id>设置的字段)结果才正确

多对一<association property="" javaType="">

<result column="" javaType="" property=""/>


一对多<collection property="" ofType="">


多对多


同类技术对比

注意事项及小甜点


总结

1、工作原理:


2、优点:

1、简单易学

       mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。  

2、灵活

       mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。  

3、解除sql与程序代码的耦合

       通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 

4、提供映射标签,支持对象与数据库的orm字段关系映射  
5、提供对象关系映射标签,支持对象关系组建维护 
6、提供xml标签,支持编写动态sql。

 缺点:

 

1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。  
2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。  

3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。  

4、二级缓存机制不佳

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。