首页 > 其他分享 >mybatis返回自增主键值

mybatis返回自增主键值

时间:2023-11-13 20:22:04浏览次数:27  
标签:sname student sage semail 自增主 键值 Student mybatis

对于自增主键在某些业务中保存一个对象后,需要使用到这个主键完成后续的业务逻辑,就需要获取该主键值。

1、在接口中定义新增方法

    int addStudent(Student student);

2、在mapper中配置新增配置

方式一:

  1. <insert id="addStudent" parameterType="Student" useGeneratedKeys="true" keyProperty="sid">
  2. insert into student(sname,sgender,sage,semail,sphoto) values (#{sname},#{sgender},#{sage},#{semail},#{sphoto});
  3. </insert>

useGeneratedKeys: 表示开启获取自增主键值。

keyProperty:表示从表中取到主键值后赋给Student类中的哪个属性。

方式二:

  1. <insert id="addStudent" parameterType="Student">
  2. <selectKey resultType="int" keyProperty="sid" keyColumn="sid" order="AFTER">
  3. select last_insert_id();//查询自增的主键值
  4. </selectKey>
  5. insert into student(sname,sgender,sage,semail,sphoto) values (#{sname},#{sgender},#{sage},#{semail},#{sphoto});
  6. </insert>

keyColumn: 指定取数据库中哪一列的值(通常指主键列)。

keyProperty: 表示取出主键值后赋值Student对象的哪个属性。

resultType: 表示对象的属性类型

order:表示完后sql语句之前还是之后把主键值赋给实体类对应属性。

3、测试

两种方法测试结果相同

  1. @Test
  2. public void t01() {
  3. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  4. StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
  5. Student student = new Student(0, "tom", "男", 18, "[email protected]", "");
  6. System.out.println(student);
  7. int rows = studentDao.addStudent(student);
  8. System.out.println(rows);
  9. System.out.println(student);
  10. SqlSessionUtil.closeSqlSession(sqlSession);
  11. }

结果:

标签:sname,student,sage,semail,自增主,键值,Student,mybatis
From: https://www.cnblogs.com/echosada/p/17830077.html

相关文章

  • Mybatis
    1.Mybatis快速入门(1)写出实体类的javabean形式(2)创建一个mapper接口,里面提供方法(3)创建mapper接口的xml映射文件,里面编写查询数据库的语句(4)创建mybatis核心配置文件mybatis-config.xml(5)进行测试mybatis其实是封装了ibatis,对技术进行了优化,方便了开发。2.sql语句传参#{}方式传参......
  • java项目实战-mybatis-基本用法02接口绑定实现类-day23
    目录1.复习什么是接口什么是类?2.mybatis接口绑定实现类来实现查询3.参数的传递4插入数据1.复习什么是接口什么是类?publicinterfaceSpeak{voidsay();}Speak这个接口里面定义了say方法所有实现了Speak的类都必须实现say方法publicclassChineseimpl......
  • 现在有个外键值是area_id_id,我就想他叫area_id该怎么做
    如果你想将一个外键字段的数据库列名从默认的`area_id_id`更改为`area_id`,你可以使用`db_column`参数来指定自定义的数据库列名。以下是一个示例:```pythonfromdjango.dbimportmodelsclassYourModel(models.Model):  area=models.ForeignKey(Area,on_delete=models.C......
  • 简单全面的mybatis详解
    1、前言MyBatis是一款ORM(Object-RelationalMapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。那MyBatis为我们做了哪些事情呢?其实,总结来看主要有如下几点:SQL映射配置:MyBatis使用XML或注解配置文件来定义......
  • Mybatis-Plus 使用隐患,太坑了!
    作者:糊涂码链接:https://juejin.cn/post/7156428078061895710前言MP从出现就一直有争议感觉一直都存在两种声音like:很方便啊通过函数自动拼接Sql不需要去XML再去使用标签之前一分钟写好的Sql现在一秒钟就能写好简直不要太方便dislike:侵入Service层不好维护可......
  • 实现MyBatisPlus自定义sql注入器
    目标:新增mysql下的插入更新的语法INSERTINTO%s%sVALUES%sONDUPLICATEKEYUPDATE%s新增方法类,新增的方法名称为insertOrUpdate和insertOrUpdateBatch方法,但其mapper层的方法名为insertOrUpdate方法importcom.baomidou.mybatisplus.annotation.IdType;importcom.b......
  • 手把手教你如何扩展(破解)mybatisplus的sql生成 | 京东云技术团队
    mybatisplus的常用CRUD方法众所周知,mybatisplus提供了强大的代码生成能力,他默认生成的常用的CRUD方法(例如插入、更新、删除、查询等)的定义,能够帮助我们节省很多体力劳动。他的BaseMapper中定义了这些常用的CRUD方法,我们在使用时,继承这个BaseMapper类就默认拥有了这些能力。如果我......
  • mybatis-plus 根据当前时间,判断检索
    <iftest="timeStatus!=nullandtimeStatus.trim()!=''"><iftest="timeStatus==1"><![CDATA[ANDDATE_FORMAT(now(),'%Y-%m-%d%H:%i:%S')<DATE_FORMAT(start_date,'%Y-%m-%d......
  • mybatis中日期时间比较遇到得问题
    今天进行下面得查询得时候,总是报:Cause:java.lang.IllegalArgumentException:invalidcomparison:java.time.LocalDateandjava.lang.String,提示不能将LocalDate类型与String类型进行比较,刚开始一直在检查<if>下得条件,寻思是不是类型写的不对,后来才发现是<if>标签中得判断问题,......
  • mybatis
    5.解决属性名和字段名不一致的问题解决方法:起别名ResultMap6.日志6.1日志工厂如果一个数据库出现了异常,我们经常需要排错,日志是最好的助手。曾经:sout,debug现在:日志需要掌握的:LOG4JSTDOUT_LOGGING至于具体使用哪一个,在MyBatis中设置。 需要在核心配置文......