通过mybatis添加数据记录时,如何返回主键

java

  private SqlSession session = null;

    @BeforeClass
    public void init() throws IOException {
        // SqlSession--->SqlSessionFatory----->SqlSessionFatoryBuilder
        SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder();
        InputStream ins = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory ssf = ssb.build(ins);
        session = ssf.openSession();
    }

    public static void main(String[] args) throws IOException {

        SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder();
        InputStream ins = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory ssf = ssb.build(ins);
        SqlSession   session = ssf.openSession();
        User user = session.selectOne("cn.java.dao.impl.One2ManyImpl.one2Many");
        System.out.println(user);
    }

    @Test
    public void one2Many() {
        User user = session.selectOne("cn.java.dao.impl.One2ManyImpl.one2Many");
        System.out.println(user);
    }a

    @Test
    public void addUser() {
        User user = new User();
        user.setPassword("456");
        user.setUsername("aaa");
        System.out.println(user);
        int result = session.insert("cn.java.dao.impl.One2ManyImpl.addUser", user);
        // session.commit();
        System.out.println("result=" + result);// result代表的是影响的行数
        System.out.println("当前插入数据的主键为=" + user.getId());
    }

    @Test
    public void userAdd() {
        Map<String, Object> map = new HashMap<String, Object>();
        int result = session.insert("cn.java.dao.impl.One2ManyImpl.userAdd", map);
        session.commit();
        System.out.println("result=" + result);// result代表的是影响的行数
        System.out.println("当前插入数据的主键为=" + map.get("id"));

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.java.dao.impl.One2ManyImpl" >
  <resultMap id="BaseResultMap" type="cn.java.entity.User" >
   <result property="id" javaType="Long" column="id"/>
   <result property="username" javaType="String" column="username"/>
   <result property="password" javaType="String" column="password"/>
   <collection property="orderList" ofType="cn.java.entity.Order">
        <id column="orderId" property="orderid" jdbcType="BIGINT" />
        <result column="orderName" property="ordername" jdbcType="VARCHAR" />
        <result column="price" property="price" jdbcType="REAL" />
        <result column="userId" property="userid" jdbcType="BIGINT" />
   </collection>
  </resultMap>

  <select id="one2Many" resultMap="BaseResultMap">
    select * from users u inner join orders o on  u.id=o.`userId`
  </select>

  <!--
    useGeneratedKeys:使用主键作为返回值
    keyProperty:将主键值封装到某一个实体类中对应的属性中
   -->
  <insert id="addUser" useGeneratedKeys="true" parameterType="cn.java.entity.User" keyProperty="id">
    INSERT INTO users SET username=#{username},PASSWORD=#{password}
  </insert>

  <insert id="userAdd" useGeneratedKeys="true" keyProperty="id" parameterType="Map">
    INSERT INTO users SET username=‘xxx‘,PASSWORD=‘xxx‘
  </insert>

</mapper>

原文地址:http://blog.51cto.com/357712148/2109294

时间: 2024-09-30 03:45:11

通过mybatis添加数据记录时,如何返回主键的相关文章

mybatis框架(6)---mybatis插入数据后获取自增主键

mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标签(可以一个或者多个:比如:女性,爱,钱等等),然后存储到数据库中.怎么存,肯定涉及到三张表,新闻表,标签表,新闻标签id关联表 新闻表插入数据简单,标签表插入数据简单.那新闻标签表呢,如何关联,那是不是需要新闻表和标签表插入数据的时候,返回它们的主键Id然后再存储到新闻标签表中. 这种场景还是蛮常

mybatis在oracle插入对象后返回主键值

在mybatis中默认插入一条记录后,返回值为插入记录的条数. 现在想获取插入记录后,当前被插入的记录的主键值,需在insert方法中添加如下代码: <insert id="insert" parameterType="cn.com.pm.ppm.model.UserInfo" >   <selectKey resultType="java.math.BigDecimal" order="BEFORE" ke

mybatis新增数据后获取自增主键

mybatis对应mysql <insert id="insert" parameterType="com.timestech.wsgk.web.model.SysOrg" useGeneratedKeys="true"> --------------即可获取service中实体类的自增ID insert into BJLT.SYS_ORG (ID, NAME, P_ID, P_NAME, REMARK, LEVELS, STATUS

解决mybatis3添加数据返回主键

最近项目用到插入记录后,根据生成的主键,再做其他操作,但是mybatis返回的是影响的行书,网上搜,大部分是如下形式 <insert id="add" parameterType="..." useGeneratedKeys="true" keyProperty="id"> ... </insert> 此种用法仅限于像mysql,sqlserver这样主键有自增功能的数据库,但是oracle不行. 咱也

Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值

有时,我们需要往一张表插入一条记录,同时返回主键ID值. 假定主键ID的值都是通过对应表的SEQUENCE来获得,然后进行ID赋值 这里有几种情况需要注意: 1)如果建表语句含有主键ID的触发器,通过触发器来实现主键ID的自增,实现方式如下: INSERT INTO GP_MONTH_BILL ( MONTH, BONUS_VALUE, CUR_WAY, CUR_TIME, STATUS, IS_USE, CREATE_TIME) VALUES ( CUR_MONTH, CUR_BONUS_VA

mybatis添加记录时返回主键id

参考:https://www.cnblogs.com/nuccch/p/7687281.html 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作.在使用mybatis作为ORM组件时,可以很方便地达到这个目的.鉴于mybatis目前已经支持xml配置和注解2种方式,所以分别给予详细介绍. 数据表设计: drop table if exists `test`; create table `test` ( `id` bigint(20) NOT NU

MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro

Mybatis 插入数据后返回主键值

Oracle中获取刚刚插入记录的主键值: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo">     <selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">    SELECT U_US

MyBatis在Oracle中插入数据并返回主键的问题解决

引言:  在MyBatis中,希望在Oracle中插入数据之时,同时返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle, Spring 3.2   SQL Snippet in XML Configuration: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo"> <selectKey resultType="