MyBatis的Mapper映射文件详解

<?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">
<!--
    namespace:命名空间,接口的全类名
    id:唯一标示
    resultType:返回值类型
    #{id}:从传递过来的参数中取出id的值
   -->
<mapper namespace="com.flx.mybatis.guigu.employee.dao.EmployeeMapper">

    <!--Map传参-->
    <select id="getEmployeeByParamMap" resultType="com.flx.mybatis.guigu.bean.Employee" databaseId="mysql">
        select * from tb1_employee where id=#{id} and last_name=#{lastName}
    </select>

    <!--注解支持的传参-->
    <select id="getEmployeeByIdAndLastName" resultType="com.flx.mybatis.guigu.bean.Employee" databaseId="mysql">
        select * from tb1_employee where id=#{id} and last_name=#{lastName}
    </select>

    <!--这条语句在mysql环境下面使用的,databaseId-->
    <select id="getEmployeeById" resultType="com.flx.mybatis.guigu.bean.Employee" databaseId="mysql">
        select * from tb1_employee where id = #{id}
    </select>

    <!--这条语句在oracle环境下面使用的,databaseId-->
    <select id="getEmployeeById" resultType="com.flx.mybatis.guigu.bean.Employee" databaseId="oracle">
        select emp_id id,emp_name lastName,emp_age age from employee where emp_id = #{id}
    </select>

    <!--下面写增删改-->

    <!--参数类型可以省略-->
    <!--支持主键获取
        useGeneratedKeys = true 使用自增主键获取值
        keyProperty = id 将获得的id放在id属性中
    -->
    <insert id="addEmployee" parameterType="com.flx.mybatis.guigu.bean.Employee" databaseId="mysql"
     useGeneratedKeys="true" keyProperty="id">
        insert into tb1_employee (last_name,gender,email)
        VALUES (#{lastName},#{gender},#{email})
    </insert>

    <!--oracle不支持自增,支持序列-->
    <insert id="addEmployee" databaseId="oracle">
        <!--order: 当前sql在插入sql之前运行-->
        <selectKey keyProperty="id" order="BEFORE" resultType="Integer" >
            <!--编写查询主键的sql-->
            select seq_employee.nextval from dual
        </selectKey>
        <selectKey keyProperty="id" order="AFTER" resultType="Integer" >
            <!--insert语句执行完执行这个-->
            select seq_employee.currval from dual
        </selectKey>
        <!--流程:查询seq序列的sql先执行结果赋值给id,然后执行insert语句时候动态把id传给insertsql完成主键的存储-->
        insert into employee (emp_id,last_name,gender,email)
        VALUES (#{id},#{lastName},#{gender},#{email})
    </insert>

    <update id="updateEmployee" >
        update tb1_employee set last_name=#{lastName},gender=#{gender},email=#{email}
        where id=#{id}
    </update>

    <delete id="deleteEmployee">
        delete from tb1_employee where id=#{id}
    </delete>

</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花生糖葫芦侠

创作不易,请多多支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值