mybatis-sql映射文件-获取自增主键值-1

EmployeeMapper.xml(oracle(after和before方式,最好使用before方式,after方式可能有问题) mysql分别如何获取)

 <!--
    mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGeneratoredKeys(),
    useGeneratedKeys="true",使用自增主键策略
    keyProperty:指定对应的主键属性,也就是mybatis获取到的主键值给javabean的哪个属性
    -->
    <insert id="addEmp" parameterType="com.stayreal.mybatis.Employee" useGeneratedKeys="true" keyProperty="id" databaseId="mysql">
        insert into tbl_employee(last_name,email,gender)
        values(#{lastName},#{email},#{gender})
    </insert>
    <!--
 oracle不支持自增,Oracle使用序列来模拟自增,
 每次插入的数据的主键是从序列中拿到的值,如何取到这个值
 -->
    <insert id="addEmp"  databaseId="oracle">
        <!--查出的主键值封装给javabean的哪个属性
        order="BEFORE",当前sql在插入sql之前运行
               AFTER,
        resultType:查出的数据返回值类型
        -->
        <!--BERLORE版本-->
    <!--<selectKey keyProperty="id" order="BEFORE" resultType="Integer">-->
        <!--&lt;!&ndash;编写查询主键的sql语句 before&ndash;&gt;-->
        <!--select EMPLOYEES_SEQ.nextval from dual-->
    <!--</selectKey>-->
        <!--insert into employees(employee_id,last_name,email)-->
        <!--values(#{id},#{lastName},#{email})-->

        <!--编写查询主键的sql语句 after版本-->
        <selectKey keyProperty="id" order="AFTER" resultType="Integer">
            <!--编写查询主键的sql语句 before-->
            select EMPLOYEES_SEQ.currval from dual
        </selectKey>
        insert into employees(employee_id,last_name,email)
        values(EMPLOYEES_SEQ.nextval,#{lastName},#{email})
    </insert>

Junit测试

 // 测试添加
 // 插入到数据库生成的id如果是5,getId()返回的结果是5
        Employee employee = new Employee(null,"Jerry","Jerry@qq.com","1");
        employeeMapper.addEmp(employee);
        System.out.println(employee.getId());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值