1.写一篇 关于mybatis的总结

1:MyBatis:封装了jdbc的持久层框架

2:MyBatis框架的优点

1)与JDBC相比,减少了50%以上的代码量。

2)MyBatis是最简单的持久化框架,小巧并且简单易学。

3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。

4)提供XML标签,支持编写动态SQL语句。

5)提供映射标签,支持对象与数据库的ORM字段关系映射。

3: MyBatis框架的缺点:

1)SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求。

2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

4:SQL映射文件

下面是关于SQL映射文件的几个顶级元素:

mapper:映射文件的根元素节点,只有一个属性namespace(命名空间),作用:

用于区分不同的mapper,全局唯一。

绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实体类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句。因此namespace的命名必须要和接口同名。

resultMap:用来描述数据库结果集和对象的对应关系。

sql:可以重用的SQL块,也可以被其他语句引用。

insert:映射插入语句。

update:映射更新语句。

delete:映射删除语句。

select:映射查询语句。

namespace的命名必须跟某个DAO接口同名,通属于DAO层,所以映射文件与该DAO接口应放置在同一package下。

在不同的mapper文件中,子元素的id可以相同,MyBatis通过namespace和子元素的id联合区分。接口中的方法与映射文件中的SQL语句id应一一对应。

resultType

resultType直接表示返回类型,包括基础数据类型和复杂数据类型。

resultMap

id属性:唯一标识,此id值用于select元素的resultMap属性的引用。

type属性:表示该resultMap的映射结果类型。

result子节点:用于标识一些简单属性,其中column属性表示从数据库中查询的字段名,property则表示查询出来的字段对应的值赋给实体对象的哪个属性。

resultMap是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到某一个resultMap上。主要应用:数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果。

resultType和resultMap本质上是一样的,都是Map数据结构。但是不能同时存在,只是二者选其一使用。

association

association:映射到JavaBean的某个复杂类型属性,即JavaBean内部嵌套一个复杂数据类型属性。association仅处理一对一的关联关系。

属性:

javaType:完整Java类名或者别名。

property:映射数据库列的实体对象的属性。

id

result:

property:映射数据库列的实体对象的属性。

column:数据库列名或别名。

collection

collection元素的作用和association元素的作用类似,只不过collection元素映射的属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型(集合)属性。

属性:

property:映射数据库列的实体对象的属性。

collection的子元素与association基本一致,用来写集合。

5:使用动态SQL完成多条件查询

if:利用if实现简单的条件选择。

choose(when,otherwise):相当于Java中的switch,通常与when和otherwise搭配,只能匹配一个条件,不推荐使用。

where:简化SQL语句中where的条件判断,并能智能地处理and和or,不必担心多余关键字导致的语法错误,可以匹配多个条件。

set:解决动态更新语句。主要功能和where类似,是在包含的语句前输出一个set,若包含的语句是以逗号结束的,会自动把该逗号忽略掉,再配合if元素就可以动态地更新需要修改的字段。

trim:可以灵活地去除多余的关键字。

foreach:迭代一个集合,通常用于in条件。foreach主要用在构建in条件中,它可以在SQL语句中迭代一个集合。

属性:

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

index:指定一个名称,用于表示在迭代过程中,每次迭代到的位置。

open:表示该语句以什么开始。(如果是in条件语句,以“(”开始)

separator:表示在每次进行迭代之间以什么符号作为分隔符。(如果是in条件语句,以“,”作为分隔符)

close:表示该语句以什么结束。(如果是in条件语句,以“)”结束)

collection:该属性必须指定,不同情况下,该属性的值是不一样的。主要有三种情况:

若入参为单参数且参数类型是一个List的时候,collection属性值为list。

若入参为单参数且参数类型是一个数组的时候,collection属性值为array。

若传入参数为多参数,就需要把它们封装为一个Map进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis设计小结 MyBatis是一种优秀的持久层框架,广泛应用于Java开发中。在使用MyBatis的过程中,我总结出以下几点关于其设计的体会。 1. 简单易用:MyBatis采用了简洁的设计理念,提供了简单易用的API接口。通过XML配置文件和注解,可以方便地将SQL语句与Java代码进行解耦,使开发人员能够专注于业务逻辑的实现而不必关注底层的数据库操作。 2. 灵活性:MyBatis提供了灵活的SQL映射功能,可以满足各种复杂的查询需求。通过动态SQL语句的拼接,可以根据不同的条件生成不同的SQL语句,实现灵活的查询和更新操作。 3. 易于扩展:MyBatis采用插件机制,允许开发人员自定义插件来扩展其功能。通过插件,可以在SQL执行前后进行一些自定义的操作,如日志记录、性能监控等,提供了更多的扩展性和定制化能力。 4. 高效性能:MyBatis通过缓存机制和预编译功能来提高查询效率。它支持一级缓存和二级缓存,在相同的SQL语句被多次执行时,可以减少数据库的访问次数,提高系统的性能。 5. 易于维护:MyBatis采用了分层的设计模式,将数据访问层与业务逻辑层进行了分离,使代码结构清晰并且易于维护。同时,通过使用XML配置文件,可以将SQL语句集中管理,提高了代码的可读性和可维护性。 总之,MyBatis是一个设计简洁、易用、灵活、高效的持久层框架。它的出色设计使得开发人员能够更加专注于业务逻辑的实现,提高了开发效率和代码质量。在实际项目中,我对MyBatis的设计感到非常满意,并且推荐其他开发人员使用它来简化数据库操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值