mybatis+sqlserver中返回非自增主键
首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法):
public class Around {
private String xccd; //对应主键
private String xcnm;
private String stcd;
private String sttp;
private BigDecimal lnth;
private String lead;
private String mans;
private String side;
private Date sttm;
private Date edtm;
private String rmk;
private String addvcd;
//getter and setter ....此处省略
}
数据库表(一定要在数据库表中配置好主键,对应实体类的属性xccd):
1. Mysql,sqlserver数据库的主键是具有自增类型的,oracle没有,有的是序列。mybatis对于自增类型的主键新增或者修改返回比较容易实现:直接在mapper.xml文件中这样配置
<insert id="Savedata" parameterType="entity.Around" useGeneratedKeys="true" keyProperty="xccd">
INSERT INTO Around(stcd,sttp,xcnm,sttm,lead,mans,addvcd) VALUES {#{stcd},#{sttp},#{xcnm},#{sttm},#{lead},#{mans},#{addvcd})
</insert>
其中keyProperty为主键的值赋值到实体类的对应属性。oracle的实现方法可以百度,这里不做赘述。
2. 对于非自增类型的配置方式。uuid()和newId()获取主键的方式,这里选择newId()方式生成主键,mapper.xml的配置如下:
<insert id="Savedata" parameterType="entity.Around" useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="xccd" resultType="java.lang.String" order="BEFORE">
select newId()
</selectKey> 这里的selectkey的顺序一定在这里,keyProrty为主键对应的实体类属性,返回类型对应的uuid() newId() 一般为String,根据自己的返回类型决定。order=before为在插入当条数据之前执行,也就是生成一个主键并赋值给xccd属性。还有个order=after,为相反。
INSERT INTO Around(xccd,stcd,sttp,xcnm,sttm,lead,mans,addvcd) VALUES (#{xccd},#{stcd},#{sttp},#{xcnm},#{sttm},#{lead},#{mans},#{addvcd}) //一定要带上实体类对应主键的属性
</insert>
3.调用示例:省略dao,service层,跟平时的一样。
//将参数封装给对应的对象
Around around = new around(); 这里的主键是自生成的,所以不用赋值
around.setStcd("111");
...
//调用service层的新增方法
aroundService.add(around);
//执行完成,没有错误可以获取到新增的主键
String xxcd = around.getXccd(); //获取到返回的主键。
mybatis+sqlserver中返回非自增主键的更多相关文章
- 08Mybatis_入门程序——增加用户的操作以及返回自增主键的功能以及返回非自增主键的功能
本文要实现的功能是:给user表增加一个用户. 建表如下:
- Mybatis批量插入返回自增主键(转)
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键: 1.对于支持生成自增主键的数据库:useGenerateKeys和keyProperty. 2.不支持生成自增主键的数据库:< ...
- Mybatis插入数据返回自增主键
方法有很多,参考 mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey 这里记录一下工作中自己用到的selectkey方法的详细过程. po ...
- MyBatis 插入时返回自增主键
XML <insert id="insert" parameterType="com.stone.model.Person"> <!-- se ...
- mybatis插入数据后返回自增主键ID详解
1.场景介绍: 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...
- Mybatis:插入数据返回自增主键
使用Mybatis作为工具连接MySQL,要求在插入数据之后返回自增主键 一开始也很迷惑,Mybatis使用insert之后,成功返回的是1,失败会报错或返回0,主键去哪找来 后来知道Mybatis可 ...
- Spring中新建记录后返回自增主键的处理方法
接手一个旧系统改造的过程,要插入后立即返回自增值,不能重构guid类型主键,Spring提供了很优美的机制. Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录对应主键值 ...
- 深入分析Mybatis 使用useGeneratedKeys获取自增主键
摘要 我们经常使用useGenerateKeys来返回自增主键,避免多一次查询.也会经常使用on duplicate key update,来进行insertOrUpdate,来避免先query 在i ...
- java面试一日一题:mysql中的自增主键
问题:请讲下mysql中的自增主键 分析:该问题主要考察对mysql中自增主键的掌握,使用场景及如何设置 回答要点: 主要从以下几点去考虑 1.什么自增主键 2.使用场景是什么: 3.innodb_a ...
随机推荐
- HTML基础之DOM操作
DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...
- libgdx学习记录13——矩形CD进度条绘制
利用ShapeRenderer可进行矩形进度条的绘制,多变形的填充等操作. 这是根据角度获取矩形坐标的函数. public Vector2 GetPoint( float x, float y, fl ...
- [SHOI2015]聚变反应炉[树dp、贪心]
题意 给定一棵 \(n\) 个点的树,每个点有一个启动能量 \(d\) 和传递能量 \(c\) ,如果一个点被启动了,就会向和他直接相连的点发送 \(c\) 的能量,初始所有节点能量为0,问最少多少能 ...
- 设计模式 笔记 策略模式 Strategy
//---------------------------15/04/28---------------------------- //Strategy 策略模式----对象行为型模式 /* 1:意图 ...
- jira webhook 事件触发并程序代码调用jenkins接口触发构建操作
要解决的问题 开发管理工具触发站点构建事件,事件处理中需要调用Jenkins接口开始构建动作. 我的应用场景: 使用jira作为管理工具,在jira中创建自定义的工作流来规定测试,上线,发布等流程,并 ...
- 修炼内功_day01
测试六段: 测试第一段: - 能根据测试用例的描述步骤来执行用例 - 能对照用例的预期结果发现产品的问题 - 能够清晰准确的将问题记录下来后反馈给开发, ...
- WebSplider在线爬虫
WebSplider是什么? WebSplider在线爬虫是一个结合Web技术与爬虫技术的项目. WebSplider支持Web页面进行爬虫配置,提交配置到服务器后,服务器端爬虫程序进行数据抓取,最后 ...
- PAT甲题题解-1054. The Dominant Color (20)-排序/map
原本用map,发现超时了,后来便先用数组存储排个序,最后for一遍统计每种颜色出现的次数(每种颜色的首位索引相减+1),找出最多的即可. #include <iostream> #incl ...
- Hamburger
Bread: 我觉得舒婷解决问题的思路还是很不错的,对于java 的窗口框架也是很熟悉,打码速度也快了很多. Meat:但是我发现你在命名的时候会出现随意的现象,如果命名只有你自己看得懂的话,那么会增 ...
- Book Review 《构建之法》
-首先浏览了一遍<构建之法>这本书的前言,其中通过客观的描述性介绍了学生与学习.老师与教学.以及学习的环境.方法等等.但是对于书中前言包括正文都频繁出现的一个词语 “文档” 深表疑问.何为 ...