MyBatis映射文件
一、Mybatis文件的整体结构:
<?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="Mapper接口对应的全路径名称">
<!--可包含多个select、insert、update、resultMap、sql子节点-->
</mapper>
二、Mapper节点下的几个主要的子节点
1、select节点说明
-
select
:映射查询语句
作用:主要使用映射sql语句中的插叙语句id
:对应的是XxxMapper接口的方法名在命名空间中唯一的标识符,可以被用来引用这条语句。parameterType
:对应的是参数的类型resultType
:返回的类型,如果返回的是一个集合,需要写集合中存放的类型(泛型)statementType
:类型的取值有STATEMENT
(一般的stament语句)、PERPARED
(默认
,预编译的perparedStatement语句)、CALLABLE
(过程)resultMap
:复杂的结果集映射(下面会介绍到)。
2、insert、update和detele节点的说明
insert
(映射插入语句 )、update
(映射更新语句)、 delete
(映射删除语句)
parameterType
:对应的是参数的类型useGeneratedKeys="true"
和keyProperty="id"
: 在MySQL中使用主键自增策略获取主键的值,可通过这两个属性并映射到keyProperty
指定的主键中去,只有在insert
、update
语句中有效
备注:在Mapper文件中,一个sql语句的结束是不需要写 “ ;
”符号的
三、更丰富的用法resultMap、sql 以及动态 sql
1、resultMap复杂的返回值
属性:id 主要用于指定该resultMap标识
1)成员变量全是基本数据类型(对应的包装类)和Sting类的POJO
- id子节点:主要用于映射主键
<id column="数据库中对应的字段" property="实体类POJO中对应成员变量" >
- result 子节点: 用于映射普通属性
<result column="数据库字段名" property="成员变量名"/>
示例:
<resultMap id="user">
<!--这里映射的是主键-->
<id column="id" prorperty="id"/>
<result column="user_name" property="userName"/>
</resultMap>
2)成员变量包含其他引用的实体类,使用级联进行指定映射
JavaBean实体类的示例:
package com.example.bean;
class User{
private Integer id;
private String userName;
private Role role;
/*
省略setter和getter
*/
}
class Role{
private Integer id;
private String role_name;
/*
省略setter和getter
*/
}
格式
<result column="数据库字段名" property="成员变量名.成员变量名">
示例:
<resultMap id="user" type="com.example.bean.User">
<!--这里映射的是主键-->
<id column="id" prorperty="id"/>
<result column="user_name" property=