zoukankan      html  css  js  c++  java
  • MyBatis 插入时返回刚插入记录的主键值

    MyBatis 插入时返回刚插入记录的主键值

    一、要求:

    1、数据库表中的主键是自增长的,如:id;

    2、获取刚刚插入的记录的id值;

    二、源代码:

    1、User.java

     1 package cn.com.zfc.model;
     2 
     3 public class User {
     4 
     5     private Integer id;
     6     private String name;
     7     private String password;
     8 
     9     public Integer getId() {
    10         return id;
    11     }
    12 
    13     public void setId(Integer id) {
    14         this.id = id;
    15     }
    16 
    17     public String getName() {
    18         return name;
    19     }
    20 
    21     public void setName(String name) {
    22         this.name = name;
    23     }
    24 
    25     public String getPassword() {
    26         return password;
    27     }
    28 
    29     public void setPassword(String password) {
    30         this.password = password;
    31     }
    32 
    33     @Override
    34     public String toString() {
    35         return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
    36     }
    37 
    38 }

    2、UserMapper.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     3 <mapper namespace="cn.com.zfc.model.UserMapper">
     4 
     5     <!-- 插入一条记录开始,返回主键插入记录的id -->
     6     <insert id="insert" parameterType="cn.com.zfc.model.User">
     7         insert into user
     8         (name,password)
     9         values
    10         (#{name},#{password})
    11         <!-- 
    12             selectKey中order属性的值是不同的,BEFORE先选择主键,设置keyProperty的值然后执行插入语句。
    13              AFTER是先执行插入语句,然后执行selectKey。 
    14          -->
    15         <selectKey keyColumn="id" keyProperty="id" order="AFTER"
    16             resultType="Integer">
    17             SELECT LAST_INSERT_ID() AS id
    18         </selectKey>
    19     </insert>
    20     <!-- 插入一条记录结束 -->
    21 </mapper>

    3、mybatis-config.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <environments default="development">
     7         <environment id="development">
     8             <transactionManager type="JDBC" />
     9             <!-- 配置数据源 -->
    10             <dataSource type="POOLED">
    11                 <property name="driver" value="com.mysql.jdbc.Driver" />
    12                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis_07" />
    13                 <property name="username" value="root" />
    14                 <property name="password" value="root" />
    15             </dataSource>
    16         </environment>
    17     </environments>
    18     <!-- 注册映射文件 -->
    19     <mappers>
    20         <!-- 注册映射文件,xml:resource -->
    21         <mapper resource="cn/com/zfc/model/UserMapper.xml" />
    22     </mappers>
    23 </configuration>

    4、MyBatisUtil.java

     1 package cn.com.zfc.util;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 
     6 import org.apache.ibatis.io.Resources;
     7 import org.apache.ibatis.session.SqlSessionFactory;
     8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     9 
    10 public class MyBatisUtil {
    11 
    12     private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder = null;
    13     private static SqlSessionFactory sessionFactory = null;
    14     private static InputStream inputStream = null;
    15 
    16     static {
    17         try {
    18             // 加载mybatis主配置文件
    19             inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    20             sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    21             // 获取SqlSessionFactory对象
    22             sessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    23         } catch (IOException e) {
    24             e.printStackTrace();
    25         }
    26     }
    27 
    28     /**
    29      * 获取SqlSessionFactory对象
    30      * 
    31      * @return
    32      */
    33     public static SqlSessionFactory getSqlSessionFactory() {
    34         return sessionFactory;
    35     }
    36 }

    5、MyBatisTest.java

     1 package cn.com.zfc.test;
     2 
     3 import org.apache.ibatis.session.SqlSession;
     4 import org.apache.ibatis.session.SqlSessionFactory;
     5 
     6 import cn.com.zfc.model.User;
     7 import cn.com.zfc.util.MyBatisUtil;
     8 
     9 /**
    10  * 获取刚插入数据库表中记录的自增长主键
    11  * 
    12  * @title MyBatisTest
    13  * @describe
    14  * @author 张富昌
    15  * @date 2017年8月22日下午10:56:58
    16  */
    17 public class MyBatisTest {
    18     public static void main(String[] args) {
    19 
    20         // 1、获取SqlSessionFactory
    21         SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
    22         // 2、获取SqlSession
    23         SqlSession sqlSession = sqlSessionFactory.openSession();
    24         String statement = "cn.com.zfc.model.UserMapper.insert";
    25         User user = new User();
    26         user.setName("张富昌2");
    27         user.setPassword("123456");
    28         // 执行添加操作之后返回的结果
    29         int result = sqlSession.insert(statement, user);
    30         // 提交
    31         sqlSession.commit();
    32         // 关闭
    33         sqlSession.close();
    34         System.out.println("result:" + result);
    35         // 获取刚刚添加进去的自增长主键id
    36         System.out.println("id:" + user.getId());
    37     }
    38 }

     三、运行效果

  • 相关阅读:
    JAVA并发-join
    JAVA并发-同步器AQS
    【转载】Kafka史上最详细原理总结
    Kubernetes部署Spring Boot应用
    Kubernetes 资源对象
    Kubernetes Pod的数据卷Volume
    三块sm865组建RAID0
    三星固态Dell版的960g的sm863a硬盘
    如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (三)
    如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (一)
  • 原文地址:https://www.cnblogs.com/zfc-java/p/7414183.html
Copyright © 2011-2022 走看看