mysql如何獲取自增id
JAVA在插入自增主鍵的一條數(shù)據(jù),如何同時獲取該條自增的主鍵id?
業(yè)務(wù)場景
開發(fā)業(yè)務(wù)場景:在學(xué)生管理系統(tǒng)業(yè)務(wù)場景中,比如班上新來一名轉(zhuǎn)校學(xué)生小吳,并參與了此次學(xué)校的摸底考試,那么系統(tǒng)管理員需要將他的信息更新到學(xué)生表的同時還需要和課程表綁定關(guān)系(多對多關(guān)系中需建立一個關(guān)系表)。
成績表(主要字段:student_id, sourse_id, score …)通過學(xué)生id和課程id來確定一條數(shù)據(jù)的唯一性。
所以在添加一名新學(xué)生的時候,相關(guān)的關(guān)系表也要做添加操作(小吳學(xué)了哪些課程)。
實際開發(fā)舉例
@Service public class GroupServiceImpl implements IGroupService { private static final Logger log = LoggerFactory.getLogger(GroupServiceImpl.class); @Autowired private GroupMapper groupMapper; @Autowired private IGroupUserService groupUserService; /* 業(yè)務(wù)場景:group(分組表),user(用戶表),分組用戶關(guān)系表(group_user) 添加一個新的分組,分組下面可以有多個成員,一個成員可以創(chuàng)建多個分組,它們之間是多對多的關(guān)系,在添加一個新分組的時候,關(guān)系表也要綁定這條添加記錄。因此此處有兩個insert操作。新建分組是必須由當(dāng)前user來新建的。所以新建的分組的時候,就得往group_user關(guān)系里填一條默認記錄。 */ @Override public int insertGroupInfo(Group group) { BeanUtils.initInsertProperty(group);//初始化一些字段 groupMapper.insertSelective(group);//添加分組 groupUserService.insertGroupUserSelective. (newGroupUser(0,group.getId(),SecurityUtils.getLoginUser().getUser().getUserId().intValue(),SecurityUtils.getLoginUser().getUser().getRoleId().intValue(),Constants.TEAM_ROLE.LEADER));//默認添加分組成員關(guān)系表一條記錄(創(chuàng)建分組者) return 1; } }
代碼實現(xiàn)
這里我們會使用mysql技術(shù),在XXXXXmapper.xml文件中,
在insert 代碼位置添加如下屬性:useGeneratedKeys=“true” 和 keyProperty=“id”,此處的id即為你設(shè)置的自增的主鍵字段
<insert id="insert" parameterType="com.demo.project.entity.Student" useGeneratedKeys="true" keyProperty="id"> insert into student (id, name,sex,age) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{age,jdbcType=VARCHAR} </insert>
在mapper映射文件添加好屬性后便可在service層直接獲取id
Student student=new Student(); student.setName("小吳"); studentService.insertStudent(student);//添加學(xué)生 ScoreService.insertScore(new Score(student.getId(),sourse.getId,0));//添加成績實體,成績默認為0分
總結(jié)
獲取當(dāng)前添加的數(shù)據(jù)字段自增id的值,
使用mysql技術(shù),在insert操作的時候,添加關(guān)鍵屬性:
- 1. useGeneratedKeys=“true”
- 2. keyProperty=“id”
- 3. 直接在service層獲取當(dāng)前添加實體的id。
- 4. mybatisplus 默認集成了useGeneratedKeys=“true” 和 keyProperty=“id” 屬性,可以直接通過getId()獲取。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SQL算術(shù)運算符之加法、減法、乘法、除法和取模的用法例子
算術(shù)運算符主要用于數(shù)學(xué)運算,其可以連接運算符前后的兩個數(shù)值或表達式,對數(shù)值或表達式進行加(+)、減(-)、乘(*)、除(/)和取模(%)運算,下面這篇文章主要給大家介紹了關(guān)于SQL算術(shù)運算符之加法、減法、乘法、除法和取模用法的相關(guān)資料,需要的朋友可以參考下2024-03-03MySQL性能參數(shù)詳解之Skip-External-Locking參數(shù)介紹
MySQL的配置文件my.cnf中默認存在一行skip-external-locking的參數(shù),即跳過外部鎖定。根據(jù)MySQL開發(fā)網(wǎng)站的官方解釋,External-locking用于多進程條件下為MyISAM數(shù)據(jù)表進行鎖定2016-05-05Mac OS下PHP環(huán)境搭建及PHP操作MySQL常用方法小結(jié)
MAMP從名字上也可以看出來,是Mac OS的Apache+MySQL+PHP的集成環(huán)境包,本文就來簡單說一下Mac OS下PHP環(huán)境搭建及PHP操作MySQL的常用方法小結(jié).2016-05-05