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>转载于:https://www.cnblogs.com/jasonboren/p/11394707.html
相关资源:Mybatis中Mapper映射文件使用详解