mapper.xml映射文件主要是用来编写sql语句的,以及一些结果集的映射关系的编写,还有就是缓存的一些配置等等。

1.<select>元素

<select>元素就是sql查询语句。可以执行一些简单的查询操作,也可以是复杂的查询操作。例如:

<select id="findCustomerById" parameterType="Integer"
resultType="com.itheima.po.Customer">
select * from t_customer where id = #{id}
</select>

2.<insert>元素

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

<insert>元素的配置示例如下:

<insert
id="addCustomer"
parameterType="com.itheima.po.Customer"
flushCache="true"
statementType="PREPARED"
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout="20">

执行插入操作后,很多时候需要返回插入成功的数据生成的主键值,此时就可以通过上面讲解的3个属性来实现。

1.对于支持主键自助增长的数据库(如MySQL),可以通过如下配置实现:

<insert id="addCustomer" parameterType="com.itheima.po.Customer"
keyProperty="id" useGeneratedKeys="true" >
insert into t_customer(username,jobs,phone)
values(#{username},#{jobs},#{phone})
</insert>

2.对于不支持主键自助增长的数据库(如Oracle),可以通过如下配置实现:

<insert id="insertCustomer" parameterType="com.itheima.po.Customer">
<selectKey keyProperty="id" resultType="Integer" order="BEFORE">
select if(max(id) is null, 1, max(id) +1) as newId from t_customer
</selectKey>
insert into t_customer(id,username,jobs,phone)
values(#{id},#{username},#{jobs},#{phone})
</insert>

3.<update><delete>元素

<update><delete>元素的使用比较简单,它们的属性配置也基本相同。

1.<update><delete>元素的常用属性如下:

<update
id="updateCustomer"
parameterType="com.itheima.po.Customer"
flushCache="true"
statementType="PREPARED"
timeout="20"> <delete
id="deleteCustomer"
parameterType="com.itheima.po.Customer"
flushCache="true"
statementType="PREPARED"
timeout="20">

2.<update><delete>元素的使用示例如下:

<update id="updateCustomer" parameterType="com.itheima.po.Customer">
update t_customer
set username=#{username},jobs=#{jobs},phone=#{phone}
where id=#{id}
</update> <delete id="deleteCustomer" parameterType="Integer">
delete from t_customer where id=#{id}
</delete>

4.<sql>元素

sql片段,可以在mapper文件中的任何地方引用。减少代码量。

例如:

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

定义sql片段,通过<include>元素的refid属性引用id为someinclude的代码片段

例如:

<select id="findCustomerById" parameterType="Integer"
resultType="com.itheima.po.Customer">
select
<include refid="customerColumns"/>
from tableName
where id = #{id}
</select>

5.<resultMap>元素

<resultMap>元素表示结果映射集,是MyBatis中最重要也是最强大的元素。它的主要作用是定义映射规则、级联的更新以及定义类型转化器等。

<resultMap>元素中包含了一些子元素,它的元素结构如下所示:

<resultMap type="" id="">
<constructor> <!-- 类在实例化时,用来注入结果到构造方法中-->
<idArg/> <!-- ID参数;标记结果作为ID-->
<arg/> <!-- 注入到构造方法的一个普通结果-->
</constructor>
<id/> <!-- 用于表示哪个列是主键-->
<result/> <!-- 注入到字段或JavaBean属性的普通结果-->
<association property="" /> <!-- 用于一对一关联 -->
<collection property="" /> <!-- 用于一对多关联 -->
<discriminator javaType=""> <!-- 使用结果值来决定使用哪个结果映射-->
<case value="" /> <!-- 基于某些值的结果映射 -->
</discriminator>
</resultMap>

简单的结果集映射

    <resultMap id="BaseResultMap" type="cn.jason.bootmybatis.model.Tests">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="age" property="age" jdbcType="INTEGER"/>
</resultMap> <select id="selectByPrimaryKey" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tests
where id = #{id,jdbcType=BIGINT}
</select>

最新文章

  1. web标准之道——笔记
  2. 尚学堂Spring视频教程(七):AOP XML
  3. java 编译时的初始化顺序
  4. MyBatis魔法堂:ResultMap详解
  5. linux使用crontab实现PHP执行定时任务及codeiginter参数传递相关
  6. hdu 3948(后缀数组+RMQ)
  7. java判断字符串是否为空的方法总结
  8. mssql sql高效关联子查询的update 批量更新
  9. ajax——client访问webservice基本用法
  10. ViewCompat.animate(view) floatEval.evaluate() argbEval.evaluate()
  11. lintcode.68 二叉树后序遍历
  12. Jest 单元测试入门
  13. java多线程的常见例子
  14. [AI开发]Python+Tensorflow打造自己的计算机视觉API服务
  15. 基于nutch-1.2实现本地搜索引擎
  16. PLA-1
  17. 8 -- 深入使用Spring -- 5...2 使用@Cacheable执行缓存
  18. Async、Await
  19. 输出前n大的数(分治)
  20. Hibernate更新删除数据后,再查询数据依然存在的解决办法

热门文章

  1. scala实战学习-尾递归函数
  2. python学习之路(8)
  3. Java连接MQTT服务-tcp方式
  4. TCP定时器 之 FIN_WAIT_2定时器
  5. 问题:解决上传文件IE浏览器弹出下载框bug?
  6. 服务器被攻击后当作矿机,高WIO
  7. HTML基础之DOM
  8. web开发(九) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)
  9. 阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
  10. 安装MySQL Enterprise Monitor