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

一、要求:

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

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

二、源代码:

1、User.java

 package cn.com.zfc.model;

 public class User {

     private Integer id;
private String name;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
} }

2、UserMapper.xml

 <?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">
<mapper namespace="cn.com.zfc.model.UserMapper"> <!-- 插入一条记录开始,返回主键插入记录的id -->
<insert id="insert" parameterType="cn.com.zfc.model.User">
insert into user
(name,password)
values
(#{name},#{password})
<!--
selectKey中order属性的值是不同的,BEFORE先选择主键,设置keyProperty的值然后执行插入语句。
AFTER是先执行插入语句,然后执行selectKey。
-->
<selectKey keyColumn="id" keyProperty="id" order="AFTER"
resultType="Integer">
SELECT LAST_INSERT_ID() AS id
</selectKey>
</insert>
<!-- 插入一条记录结束 -->
</mapper>

3、mybatis-config.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_07" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 注册映射文件 -->
<mappers>
<!-- 注册映射文件,xml:resource -->
<mapper resource="cn/com/zfc/model/UserMapper.xml" />
</mappers>
</configuration>

4、MyBatisUtil.java

 package cn.com.zfc.util;

 import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder = null;
private static SqlSessionFactory sessionFactory = null;
private static InputStream inputStream = null; static {
try {
// 加载mybatis主配置文件
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 获取SqlSessionFactory对象
sessionFactory = sqlSessionFactoryBuilder.build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 获取SqlSessionFactory对象
*
* @return
*/
public static SqlSessionFactory getSqlSessionFactory() {
return sessionFactory;
}
}

5、MyBatisTest.java

 package cn.com.zfc.test;

 import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; import cn.com.zfc.model.User;
import cn.com.zfc.util.MyBatisUtil; /**
* 获取刚插入数据库表中记录的自增长主键
*
* @title MyBatisTest
* @describe
* @author 张富昌
* @date 2017年8月22日下午10:56:58
*/
public class MyBatisTest {
public static void main(String[] args) { // 1、获取SqlSessionFactory
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
// 2、获取SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
String statement = "cn.com.zfc.model.UserMapper.insert";
User user = new User();
user.setName("张富昌2");
user.setPassword("123456");
// 执行添加操作之后返回的结果
int result = sqlSession.insert(statement, user);
// 提交
sqlSession.commit();
// 关闭
sqlSession.close();
System.out.println("result:" + result);
// 获取刚刚添加进去的自增长主键id
System.out.println("id:" + user.getId());
}
}

 三、运行效果

MyBatis 插入时返回刚插入记录的主键值的更多相关文章

  1. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

    [CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...

  2. IBatisNet:让insert操作返回新增记录的主键值

    项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...

  3. mybatis oracle 插入自增记录 获取主键值 写回map参数

    网上搜了好多文章照着弄都返回不了主键给map, 实践证明要在传入的map参数里写回插入的主键,要这样写 <selectKey resultType="java.lang.Integer ...

  4. mybatis保存时将数据库自动生成的主键返回

    场景 保存订单数据和订单详情数据时需要将订单的主键作为关联子段添加到明细表中,需要将保存订单时的主键返回给供保存明细表时使用 添加xml中新增数据时的配置 <insert id="in ...

  5. <九>JDBC_获取插入记录的主键值

  6. JDBC_获取插入记录的主键值

    <span style="font-size:24px;">package src.com.JDBC2DAO.java; import static org.junit ...

  7. MYSQL 之 JDBC(十一): JDBC获取插入记录的主键值

    取得数据库自动生成的主键值 package com.litian.jdbc; import javax.swing.plaf.nimbus.State; import java.sql.*; /** ...

  8. spring jdbc获取插入记录的主键id

    在JDBC3.0规范中,当新增记录时,允许将数据库自动产生的主键值绑定到Statement或PreparedStatement中.使用Statement时,可以通过以下方法绑定主键值: int exe ...

  9. GridView内按钮Click获取记录主键值 在GridView控件中,每行记录内会放置一个铵钮,当用

    在GridView控件中,每行记录内会放置一个铵钮,当用户点击这个铵钮时,获取当笔记录的主键值.可看演示(是一个gif动画,重新播放尝试刷新网页): 实现这个功能,你需要为GridView控件设置Da ...

随机推荐

  1. 【CC2530强化实训01】普通延时函数实现按键的长按与短按

    [CC2530强化实训01]普通延时函数实现按键的长按与短按 [题目要求]     用一个按键实现长按与短按的功能已经是很多嵌入式产品的常用手法.使用定时器的间隔定时来进行按键按下的时间是通用的做法, ...

  2. [HBase] 服务端RPC机制及代码梳理

    基于版本:CDH5.4.2 上述版本较老,但是目前生产上是使用这个版本,所以以此为例. 1. 概要 说明: 客户端API发送的请求将会被RPCServer的Listener线程监听到. Listene ...

  3. 第一个Django项目:HelloWorld

    OS:Windows家庭中文版, Python:3.6.3,Django:2.0.3 在前一篇文章中,Django已经顺利安装到了Python中,下面,开发第一个Python项目吧! 1.django ...

  4. WebApi Owin SelfHost OAuth2 - client_credentials

    参考:http://neverc.cnblogs.com/p/4970996.html

  5. laravel 中provider的理解和使用

    https://segmentfault.com/q/1010000004640866

  6. 日期时间设置 "2018-05-04T16:36:23.6341371+08:00" 格式

    using System;using System.Collections.Generic;using System.Globalization;using System.Text; namespac ...

  7. Java线程:新特征-有返回值的线程《转》

      原始文章   在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.   现在Java终于有可返回值的任务(也可以叫做线程)了. ...

  8. win10 操作配置备忘

    让程序自动启动 如果想要实现应用程序在所有的用户登录系统后都能自动启动,就把该应用程序的快捷方式放到"系统启动文件夹"里: C:\ProgramData\Microsoft\Win ...

  9. dedecms自定义模型之独立模型在首页、列表页、内容调用内容

    dedecms关于自定义模型(独立模型)的首页.列表页.内容怎么调用?在后台自定义模型(独立模型)的建立及自定义字段的添加比较简单,需要注意两点: (1)如果某个字段需要在前台列表页显示,则在前台参数 ...

  10. pip3

    pip3 install django #安装rabbitmq连接模块 pip3 install pika pip3 install paramiko pip3 install ipython pip ...