mybatis技术实践课程二

网友投稿 575 2022-05-30

Mybatis – SelectKey

属性 -描述:

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

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

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

mybatis技术实践课程二

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

Mapper文件详解

可配置标签:

select : 映射查询语句

insert: 映射插入语句

update:映射更新语句

delete:映射删除语句

sql:可被其他语句引用的可重用语句 (与 联合使用)

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:

2:(不常用,只有更新用)

3:

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

高级结果映射

多对一

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

多对一

一对多

多对多

同类技术对比

注意事项及小甜点

总结

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、二级缓存机制不佳

MyBatis SQL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一位35岁老实程序员心魔因委屈而孕育,因失望而长大
下一篇:【Flutter】Dart 数据类型 字符串类型 ( 字符串定义 | 字符串拼接 | 字符串 API 调用 )
相关文章