• Mybatis获取数据库自增主键


    一般我们都为将表中主键列设置为自增,当我们执行插入语句时,比如这样

    //测试添加
    Employee employee = new Employee(null, "jerry4",null, "1");
    mapper.addEmp(employee);
    System.out.println(employee.getId());
    

    那此时主键列我们进行`null值插入,插入后,如何能够获取自增的主键呢?

    一、mybatis获取mysql自增主键

    只需要关注mapper.xml中的sql语句

    	<!-- public void addEmp(Employee employee); -->
    	<!-- parameterType:参数类型,可以省略, 
    	获取自增主键的值:
    		mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys();
    		useGeneratedKeys="true";使用自增主键获取主键值策略
    		keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性
    	-->
    	<insert id="addEmp" parameterType="com.atguigu.mybatis.bean.Employee"
    		useGeneratedKeys="true" keyProperty="id" databaseId="mysql">
    		insert into tbl_employee(last_name,email,gender) 
    		values(#{lastName},#{email},#{gender})
    	</insert>
    

    二、mybatis获取Oracle自增主键

    	<!-- 
    	获取非自增主键的值:
    		Oracle不支持自增;Oracle使用序列来模拟自增;
    		每次插入的数据的主键是从序列中拿到的值;如何获取到这个值;
    	 -->
    	<insert id="addEmp" databaseId="oracle">
    		<!-- 
    		keyProperty:查出的主键值封装给javaBean的哪个属性
    		order="BEFORE":当前sql在插入sql之前运行
    			   AFTER:当前sql在插入sql之后运行
    		resultType:查出的数据的返回值类型
    		
    		BEFORE运行顺序:
    			先运行selectKey查询id的sql;查出id值封装给javaBean的id属性
    			在运行插入的sql;就可以取出id属性对应的值
    		AFTER运行顺序:
    			先运行插入的sql(从序列中取出新值作为id);
    			再运行selectKey查询id的sql;
    		 -->
    		<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
    			<!-- 编写查询主键的sql语句 -->
    			<!-- BEFORE-->
    			select EMPLOYEES_SEQ.nextval from dual 
    			<!-- AFTER:
    			 select EMPLOYEES_SEQ.currval from dual -->
    		</selectKey>
    		
    		<!-- 插入时的主键是从序列中拿到的 -->
    		<!-- BEFORE:-->
    		insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL) 
    		values(#{id},#{lastName},#{email<!-- ,jdbcType=NULL -->}) 
    		<!-- AFTER:
    		insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL) 
    		values(employees_seq.nextval,#{lastName},#{email}) -->
    	</insert>
    

    加油,努力学习Oracle !

    你所看得到的天才不过是在你看不到的时候还在努力罢了!
  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/heliusKing/p/11160584.html
Copyright © 2020-2023  润新知