Mybatis是什么?
-
一个框架:能够帮助我们实现B/S架构开发,提供快速编写的一个半成品软件
-
一个优秀的开源的,基于ORM思想封装的,支持自定义SQL的半自动持久层框架, 底层就是JDBC
Mybatis中的Mapper映射文件常用的一些标签
- insert:
插入语句的定义,需要
id和parameterType属性。 - delete:删除语句的定义,需要
id和parameterType属性 - update:更新语句的定义,需要
id和parameterType属性 - select:定义查询语句,用来从数据库中获取数据。需要指定
id(唯一标识符),parameterType(输入参数类型),resultType(返回值类型)等属性 - otherwise:作为 choose 的一部分,当所有 when 条件都不匹配时执行的 SQL 片段。
- where:动态添加 WHERE 子句,会自动处理 WHERE 关键字前的 AND 或 OR。
- set:动态添加 SET 子句,当更新语句中需要有条件地设置字段时使用。
- id:在 resultMap 中定义唯一标识符,通常用于主键字段。
- resultMap
查询回显
在这种一对多的查询中,我们要想成功的封装的结果,需要手动的基于<resultMap>来进行封装结果。- Mybatis中封装查询结果,什么时候用 resultType,什么时候用resultMap ?
如果查询返回的字段名与实体的属性名可以直接对应上,用resultType。 如果查询返回的字段名与实体的属性名对应不上,或实体属性比较复杂,可以通过resultMap手动封装 。
- Mybatis中封装查询结果,什么时候用 resultType,什么时候用resultMap ?
- if:动态 SQL 中用于条件判断
- foreach:当需要遍历集合时使用,如批量插入
- trim :处理 SQL 语句中的多余的空格或换行,常用于动态构建 SQL 语句。 提供了更灵活的文本处理能力,可以处理SQL语句的前缀和后缀。
- sql:用于定义可重用的 SQL 代码片段,通常与
<include>配合使用。 - include:用于引用 SQL 片段,允许重用 SQL 代码。
- parameter:参数映射,虽然
<select>,<insert>,<update>和<delete>元素可以包含<parameter>子元素来定义参数映射规则,但是通常不需要显式使用此元素,因为可以使用#{}占位符方式传递参数 - mapper:这是根元素,每一个
<mapper>标签代表一个接口的映射信息,需要指定namespace属性来唯一标识这个接口 - cache:用于开启二级缓存,并配置缓存实现类和其他相关属性
- discriminator: 用于区分不同类型的对象,在 resultMap 中使用,可以根据某个字段的不同值映射不同的子对象或者子结果集。
- association: 在 resultMap 中定义一对一关联关系。
- collection:在 resultMap 中定义一对多关联关系。
- lazyLoad:控制是否懒加载关联对象,默认情况下 MyBatis 支持延迟加载。
- plugins:可以定义拦截器插件,用来扩展 MyBatis 的功能。
- environment:虽然这不是一个直接位于 mapper 文件内的标签,但它可以在 MyBatis 的主配置文件中定义不同的环境设置,如不同的数据库连接信息,这可以通过
<mapper>标签中的environment属性来引用 - constructor:用于 resultMap 中定义对象构造函数的参数注入。 autoMapping:自动映射开关,可以控制自动映射的行为。
- bind:用于绑定一个变量名到一个表达式的值,可以在 SQL 中复用。
- dynamic:动态 SQL 的容器,可以包含 if、choose、where、set 等子元素来构建动态 SQL。
- ...