首页 > 其他分享 >mybatis insert 返回主键

mybatis insert 返回主键

时间:2023-11-08 18:05:32浏览次数:33  
标签:insert VARCHAR image private advert jdbcType mybatis 主键


需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。

方法1(推介使用):在mapper中指定keyProperty属性,示例如下:

<insert id="insert" parameterType="com.cl.media.model.Advert"
		useGeneratedKeys="true" keyProperty=advertId">
		insert into r_advert
		(advert_id, org_id, title,image, `url`)
		values (#advertIdjdbcType=BIGINT},#{orgId,jdbcType=BIGINT},#{title,jdbcType=VARCHAR},
		#{image,jdbcType=VARCHAR},#{url,jdbcType=VARCHAR})
	</insert>

方法2:在mapper中指定keyProperty属性,示例如下:

<insert id="insert" parameterType="com.cl.media.model.Advert">
		<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="advertId">
			SELECT LAST_INSERT_ID() AS advertId
		</selectKey>
		insert into r_advert
		(advert_id, org_id, title,image, `url`)
		values (#advertIdjdbcType=BIGINT},#{orgId,jdbcType=BIGINT},#{title,jdbcType=VARCHAR},
		#{image,jdbcType=VARCHAR},#{url,jdbcType=VARCHAR})
	</insert>

如上所示,我们在insert中指定了keyProperty="advertId",其中advertId代表插入的Advert对象的主键属性。

Advert.java

public class Advert {
	private Long advertId;
	private Long orgId;
	private String title;
	private String image;
	private String url;
}


测试:

System.out.println("插入前:"+advert.getAdvertId());
int insert = dao.insert(advert);
System.out.println("插入后:"+advert.getAdvertId());

输出:

插入前:null
插放后: 34






标签:insert,VARCHAR,image,private,advert,jdbcType,mybatis,主键
From: https://blog.51cto.com/u_809530/8257124

相关文章

  • mybatis在xml文件中处理大于号小于号的方法
    第一种方法:用了转义字符把>和<替换掉,然后就没有问题了。SELECT*FROMtestWHERE1=1ANDstart_date <=CURRENT_DATEANDend_date>=CURRENT_DATE附:XML转义字符           <                     ......
  • Mybatis if test 判断数字时需要注意
    mybatis做if判断注意mybatis做if判断注意:下面这种写法只适用于id类型为字符串.<iftest="id!=nullandid!=''">id=#{id}</if>如果id类型为int当id=0时这个判断不会传该值的。test="id!=nullandid!=''orid==0">......
  • mybatis 多个条件in查询
    1.UI如下,共有四个查询条件,每个查询可以多选,所以考虑用in查询 2.查询DTO类封装如下:@Data@ApiModel(value="整机下市明细信息查询对象")publicclassMachineOffMarketQueryDto{@ApiModelProperty(value="型号编码集合",required=true)@NotEmpty(message="型......
  • mybatisplus轻松完成一次模糊+分页查询
    之前一直用mybatis+pageinfo完成模糊+分页查询,还需要手写sql语句,之前一直没做尝试,今天试了试mybatisplus一个人完成模糊+分页,挺简单的有一个小插曲是,我的前端接受的data中,data.list变成了data.record,一开始没有查到数据,让我差点怀疑自己哪里写错了,在使用sout的检查中我发现servic......
  • 解决mybatis嵌套查询使用PageHelper分页不准确
    版权声明:本文为CSDN博主「那只小猿」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_41869361/article/details/116427385springboot项目中嵌套查询使用PageHelper发现使用结果不正确,上PageHelper官网看了一下果然是......
  • springboot mybatis-plus 登录接口
    下面是使用SpringBoot和MyBatis-Plus实现登录接口的示例代码:添加依赖在pom.xml文件中添加以下依赖:<dependencies><!--SpringBoot--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</a......
  • springboot+mybatis-plus批量删除
    可以使用Mybatis-Plus提供的deleteBatchIds方法来实现批量删除。示例代码:@AutowiredprivateMybatisPlusMappermybatisPlusMapper;publicvoiddeleteBatch(List<Long>ids){mybatisPlusMapper.deleteBatchIds(ids);}其中,MybatisPlusMapper是你的Mapper接口,继承了BaseMa......
  • javaweb-- Mybatis参数传递
     Mybatis提供了ParamNameResolver类进行封装 传入多个参数时,mybatis会将参数封装成Map集合map.put("arg0",参数值1)map.put("param1",参数值1)map.put("arg1",参数值2)map.put("param2",参数值2) ......
  • 通过mybatis-plus的自定义拦截器实现控制 mybatis-plus的全局逻辑删除字段的控制 (修改
    需求:过滤部分请求不实现mybatis-plus的逻辑删除看到网上关于mybatis-plus的自定义拦截器的文章有的少想了想自己写了一篇欢迎参考指正通过springboot的拦截器在请求进来时标记需要实现的需求的逻辑importlombok.Data;@DatapublicclassSyncBo{privateBoolean......
  • MySQL: Speed of INSERT Statements
    SpeedofINSERTStatementsTooptimizeinsertspeed,combinemanysmalloperationsintoasinglelargeoperation.Ideally,youmakeasingleconnection,sendthedataformanynewrowsatonce,anddelayallindexupdatesandconsistencycheckinguntilthe......