MyBatis(三) 映射文件mapper.xml怎么配置、其中标签的使用

九、映射文件

9.1 MyBatis初始化

在这里插入图片描述

9.2 mapper根标签

mapper文件相当于DAO接口的‘实现类’,namespace属性要指定实现DAO接口的全限定名

StudentMapper.xml

<mapper namespace="com.wyl.dao.StudentDAO">

</mapper>

9.3 insert标签

声明添加操作(sql:insert …)

常用属性:

id属性,绑定对应DAO接口中的方法

parameterType属性,用以指定接口中对应方法的参数类型(可省略)

useGeneratedKeys属性,设置添加操作是否需要回填生成的主键

keyProperty属性,指定回填的id设置到参数对象中的哪个属性

timeout属性,设置此操作的超时时间,如果不设置,则一直等待

主键回填

两种不同的方式:

    <insert id="insertStudent" useGeneratedKeys="true" keyProperty="stuId">
        insert into tb_students(stu_num,stu_name,stu_gender,stu_age)
        values(#{stuNum},#{stuName},#{stuGender},#{stuAge})
    </insert>
    <insert id="insertStudent">
        <selectKey keyProperty="stuId" resultType="java.lang.Integer">
            select last_insert_id()
        </selectKey>
        insert into tb_students(stu_num,stu_name,stu_gender,stu_age)
        values(#{stuNum},#{stuName},#{stuGender},#{stuAge})
    </insert>

9.4 delete标签

声明删除操作

9.5 update标签

声明修改操作

9.6 select标签

声明查询操作

  • id属性,指定绑定方法的方法名
  • parameterType属性,设置参数类型
  • resultType属性,指定当前sql返回数据封装的对象类型(实体类)(可以通过typeAlias标签取别名)
  • resultMap属性,指定从数据表到实体类的字段和属性的对应关系
  • useCache属性,指定此查询操作是否需要缓存
  • timeout属性,设置超时时间

9.7 resultMap标签

resultMap标签用于定义实体类与数据表的映射关系(ORM)

    <resultMap id="studentMap" type="Student">	//用alias取的别名
        <id column="sid" property="stuId"/>
        <result column="stu_num" property="stuNum"/>
        <result column="stu_name" property="stuName"/>
        <result column="stu_gender" property="stuGender"/>
        <result column="stu_age" property="stuAge"/>
    </resultMap>

9.8 cache标签

设置当前DAO进行数据库操作时的缓存属性设置

<cache type="" size="" readOnly="false" />

9.9 SQL片段—sql和include标签

SQL片段

    <select id="listStudents" resultMap="studentMap">
        select sid ,stu_num ,stu_name ,stu_gender ,stu_age
        from tb_students
    </select>

    <select id="queryStudent" resultMap="studentMap">
        select sid ,stu_num ,stu_name ,stu_gender ,stu_age
        from tb_students
        where stu_num=#{aaa}
    </select>

    <select id="listStudentsByPage" resultMap="studentMap">
        select sid ,stu_num ,stu_name ,stu_gender ,stu_age
        from tb_students
        limit #{start},#{pageSize}
    </select>

我们发现,不同的查询操作(全部查询、按学号查询、分页查询),它们包含有相同的字段名。如果类似的操作过多,不仅反复写起来麻烦,而且容易出错。

可以使用sqlinclude标签来实现对相同字段名的复用。

    <sql id="wanglaoji">sid ,stu_num ,stu_name ,stu_gender ,stu_age</sql>
    <select id="listStudents" resultMap="studentMap">
        select <include refid="wanglaoji"/>
        from tb_students
    </select>

    <select id="queryStudent" resultMap="studentMap">
        select <include refid="wanglaoji"/>
        from tb_students
        where stu_num=#{aaa}
    </select>

    <select id="listStudentsByPage" resultMap="studentMap">
        select <include refid="wanglaoji"/>
        from tb_students
        limit #{start},#{pageSize}
    </select>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋秋秋叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值