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中是最强大的元素,在之后的关系映射中会详细的讲到
2 comments
一脸懵逼……
java为后端确实有点难懂,还是PHP好对吧!