子元素由上到下进行配置
元素用于映射查询语句,它可以帮助我们从数据库中读取数据。
<!-- 更新信息 -->
<update id="updateUser" parameterType="com.harry.pojo.User"
flushCache="true" statementType="PREPARED" timeout="20">
update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id};
</update>
<!-- 删除信息 -->
<delete id="deleteUser" parameterType="int"
flushCache="true" statementType="PREPARED" timeout="20">
delete from mybatis.user where id = #{id};
</delete>
元素中,还有其他一些可以配置的属性:
属性 | 说明 |
---|---|
id | 表示命名空间中的唯一标识符,常与命名空间组合起来使用。组合后如果不唯一,MyBatis 会抛出异常 |
parameterType | 该属性表示传入SQL语句的参数类的全限定名或者别名。它是一个可选属性,因为MyBatis可以通过TypeHandler推断出具体传入语句的参数。其默认值是unset (依赖于驱动) |
resultType | 从SQL语句中返回的类型的类的全限定名或者别名。如果是集合类型,那么返回的应该是集合可以包含的类型,而不是集合本身。返回时可以使用resultType或resultMap之一 |
resultMap | 表示外部resultMap的命名引用。返回时可以使用resultType或resultMap之一 |
resultCache | 表示在调用SQL语句之后,是否需要MyBatis清空之前查询的本地缓存和二级缓存。其值为布尔类型( truelfalse),默认值为false.如果设置为true,则任何时候只要SQL语句被调用,都会清空本地缓存和二级缓存 |
userCache | 用于控制二级缓存的开启和关闭。其值为布尔类型( truelalse),默认值为true, 表示将查询结果存入二级缓存中 |
timeout | 用于设置超时参数,单位为秒。超时时将抛出异常 |
fetchSize | 获取记录的总条数设定,其默认值是unset (依赖于驱动) |
statementType | 用于设置MyBatis使用哪个JDBC的Statement工作,其值为STATEMENT、PREPARED(默认值)或CALLABLE,分别对应JDBC中的Statement、PreparedStatement 和CallableStatement |
resultSetType | 表示结果集的类型,其值可设置为FORWARD_ ONLY、SCROLL SENSITIVE或SCROLL JINSENSITIVE,它的默认值是unset (依赖于驱动) |
<insert id=“addUser” parameterType=“com.harry.pojo.User"flushCache=“true” statementType=“PREPARED” keyProperty=”“keyColumn=”" useGeneratedKeys="" timeout=“20”>
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
属性 | 说明 |
---|---|
keyProperty | (仅对insert和update有用)此属性的作用是将插入或更新操作时的返回值赋值给PO类的某个属性,通常会设置为主键对应的属性。如果需要设置联合主键,可以在多个值之间用逗号隔开 |
keyColumn | (仅对insert和update有用)此属性用于设置第几列是主键,当主键列不是表中的第一-列时需要设置。在需要主键联合时,值可以用逗号隔开 |
useGeneratedKeys | (仅对insert和update有用)此属性会使MyBatis使用JDBC |
<!-- resultMap 的元素结构 -->
<resultMap id="" type="">
<constructor> <!-- 类在实例化时,用来注入到结果到构造方法中 -->
<idArg/> <!-- ID 参数;标记结果为 ID -->
<arg/> <!-- 注入到构造方法的一个普通结果 -->
</constructor>
<id/> <!-- 用于表示哪个列是主键 -->
<result/> <!-- 注入到字段或JavaBean 属性的普通结果 -->
<association property=""/> <!-- 用于一对一关联 -->
<collection property=""/> <!-- 用于一对多关联 -->
<discriminator javaType=""> <!-- 使用结果值来决定使用哪个结果映射 -->
<case value="" /> <!-- 基于某些值得结果映射 -->
</discriminator>
</resultMap>
在元素中,可以配置以下属性:
- property:指定映射到的实体类对象属性,与字段一 一对应。
- column:指定表中对应的字段
- javaType:指定映射到实体对象属性的类型。
- select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。
- fetchType:指定在关联查询时是否启用延迟加载。fetchType 属性有两个属性值lazy 和 eager 两个属性值,默认值为lazy (即默认关联映射延迟加载)
<!--方式一:嵌套查询-->
<association property="card" column="card_id"
javaType="com.itheima.po.IdCard"
select="com.itheima.mapper.IdCarMapper.findCodeById"/>
<!--方式二:嵌套结果-->
<association property="card" javaType="com.itheima.po.IdCard">
<id property="id" column="card_id" />
<result property="card" column="code"/>
</association>
<!--方式一:嵌套查询-->
<collection property="ordersList" column="id"
ofType="com.itheima.po.Orders"
select="com.itheima.mapper.OrdersMapper.selectOrders" />
<!--方式二:嵌套结果-->
<collection property="ordersList" ofType="com.itheima.po.Orders">
<id property="id" column="orders_id"/>
<result property="number" column="number" />
</collection>
属性 | 说明 |
---|---|
driver | JDBC驱动的Java类的全限定名 |
url | 数据库的URL地址 |
username | 登录数据库的用户名 |
password | 登录数据库的密码 |
defaultTransactionlsolationLevel | 默认的连接事务隔离级别 |
元素
- MyBatis框架每次创建结果对象的新实例时,都会使用一个对象工厂( ObjeclFactory)的实例来完成。
- MyBatis中默认的ObjectFactory的作用就是实例化目标类,它既可以通过默认构造方法实例化,也可以在参数映射存在的时候通过参数构造方法来实例化。
- 通常情况下,我们使用默认的ObjectFactory即可,MyBatis 中默认的ObjectFactory 是由og,apache iatis relion.tactory.on DlbieceFctoeor来提供服务的。
- 大部分场景下都不用配置和修改,但如果想覆盖OpiecrFactory 的默认行为,则可以通过自定义ObieclFactoy来实现。
除了可以使用元素自定义别名外,MyBatis 框架还默认为许多常见的java类型(如数值、字符串、日期和集合等)提供了相应的类型别名,如下:
别名 | 映射的类型 |
---|---|
__byte | byte |
__long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_ | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigde cimal | BigDecimal |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |