Mybatis中Mapper的案例

配置文件中Mapper的引入

<mappers>
    <!--<mapper resource="eendtech/mapper/UserMapper.xml"/>-->
    <mapper resource="mapper/CustomerMapper.xml"/>
</mappers>

以上可以引入我们的Mapper映射文件,当然你也可以用package扫描的方式扫描接口!在此不做过多的解释!

常用元素

<select>元素

例子

<select>元素用于映射查询语句,他可以帮助我们从数据库中读取出数据,并且组装数据给开发人员

使用select查询非常简单,以下是例子

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.edu.cqcet.yd1701.team11.mapper">
 <select id="findCustomerById" resultType="customer" parameterType="Integer">
     SELECT * FROM customer where id = #{id}
 </select>
</mapper>

我们可以采用XML的方式来进行SQL编程,上述语句进行查询用户,它接受了一个Integer参数,返回一个Customer类型的对象,对此我们可以高度自定义,极大的方便了开发人员

参数说明

属性 说明
id 表示命名空间中唯一的标识符,常与命名空间组合起来使用,组合后如果不唯一,Mybatis则会抛出异常
parameterType 改属性表示传入SQL语句的参数类型,可选属性,默认值是unset(表示依赖于驱动)
resultType 从SQL语句中返回的类型,如果是集合类型,那么返回的应该是集合可以包含的类型而不是集合本身,返回时可以使用resultType或者是resultMap之一
resultMap 表示外部resultMap的命名引用,返回时可以使用resultType或者是resultMap之一
flushCache 表示在调用SQL语句之后,是否徐亚奥Mybatis清空之前查询的本地缓存和二级缓存,类型是布尔类型,默认值以为false,如果设置成true那么则表示任何时候只要SQL语句被调用,都会清空本地缓存和二级缓存
useCache 用于控制二级缓存的开启和关闭,类型为布尔类型,默认为true表示将查询结果存入二级缓存之中
timeout 用于设置超时参数,单位为秒,超时时将异常抛出
fetchSize 获取记录的总条数设定,默认是unset
statementType 用于设置Mybatis使用哪个JDBC的Statement工作,默认为PREPARED其他还有STATEMENT或者是CALLABLE分别对应PreparedStatement/Statement/CallableStatement
resultSetType 表示结果集的类型,其值可以设置为FORWARD_ONLY,SCROLL_SENSITIVE,或者是SCROLL_INSENSITIVE,默认是unset

<insert>元素

介绍

<insert>元素用于映射插入语句,在执行完元素中定义的SQL语句后,会返回一个表示插入记录数的整数

<insert id="addCustomer" parameterType="cn.edu.cqcet.yd1701.team11.po.Customer" keyProperty="id" useGeneratedKeys="true">
insert into customer (userName,jobs,phone) values (#{userName},#{jobs},#{phone})
</insert>

参数说明

属性 说明
keyProperty (仅对insert和update有用)此属性的作用是将插入或者更新操作时的返回值赋值给PO类的某个属性,通常会设置为主键对应的属性,如果需要设置联合主键,可以再多个值之间用逗号隔开
keyColumn (仅对insert和update有用)此属性用于设置第几列是主键,当主键列不是表中的第一列时需要设置,在需要主键联合时,值可以使用逗号隔开
useGeneratedKeys (仅对insert和update有用)此属性会使Mybatis使用JDBC的getGeneratedKeys()方法来获取由数据库内部生产的主键,如MYSQL何SQL SERVER等自动递增的字段,其默认值为false

<update>元素和<delete>元素

和上述两种元素用法差不多,在此不做过多说明

<sql>元素

在一个映射文件中,通常需要定义多条SQL语句,这些SQL语句的组成可能有一部分是相同(如多条select语句中都查询相同的id,username,jobs字段)如果每一个SQL语句都重写一边相同SQL语句部分,势必会增加代码量,导致语句的耦合,Mybatis中提供<sql>元素来解决上述的问题

<sql>元素的作用就是定义可重用的SQL代码,比如我需要定义查询的字段,那么可以用以下方式

<sql id="customerColumns">
id,userName,jobs,phone
</sql>

然后我们可以通过<include>的refid属性引用自定义的代码片段

<include refid="customerColumns"/>

<resultMap>元素

这个在Mybatis中是最强大的元素,在之后的关系映射中会详细的讲到


本作品采用知识共享署名 4.0 国际许可协议进行许可。

如果可以的话,请给我钱请给我点赞赏,小小心意即可!

Last modification:May 15, 2019
If you think my article is useful to you, please feel free to appreciate