zoukankan      html  css  js  c++  java
  • 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 !

    你所看得到的天才不过是在你看不到的时候还在努力罢了!
  • 相关阅读:
    C语言程序设计第一次作业
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
  • 原文地址:https://www.cnblogs.com/heliusKing/p/11160584.html
Copyright © 2011-2022 走看看