Mybatis之主键的返回(6)
来源:互联网 发布:百度人工智能前景 编辑:程序博客网 时间:2024/06/05 18:51
一、自增主键的返回
Mysql自增主键,执行insert提交之前自动生成一个自增主键。
通过MySQL函数获取到刚刚插入记录的主键:
LAST_INSERT_ID()
在insert之后调用此函数。
1、修改User.xml中的代码
通过MySQL函数获取到刚刚插入记录的主键:
LAST_INSERT_ID()
在insert之后调用此函数。
1、修改User.xml中的代码
<!-- 添加用户 parameterType:指定输入参数类型是pojo(包括用户信息) #{}中指定pojo的属性名,接收到pojo对象的属性值, mybatis也是通过OGNL获取对象的属性值 --> <insert id="insertUser" parameterType="cn.sunft.mybatis.po.User"> <!-- 将刚刚插入的主键返回,返回到user对象中 SELECT LAST_INSERT_ID():得到insert进去记录的主键值,只适用于自增主键 keyProperty:将查询到主键值设置到parameterType指定的对象的那个属性 order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序 resultType:指定结果的类型 --> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> insert into user(username, birthday, sex, address) value(#{username}, #{birthday}, #{sex}, #{address}) </insert>2、修改Java类中的代码
/** * 添加用户信息 */@Testpublic void insertUserTest(){//mybatis配置文件String resource = "SqlMapConfig.xml";//得到配置文件,这种方式与路径耦合//InputStream inStream = Resources.getResourceAsStream(resource);//与路径解耦InputStream inStream = this.getClass().getClassLoader().getResourceAsStream(resource);//创建会话工厂SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(inStream);//创建工厂//通过工厂得到SqlSessionSqlSession sqlSession = factory.openSession();//插入用户对象User user = new User();user.setId(2);user.setUsername("王小军");user.setBirthday(new Date());user.setSex("1");user.setAddress("河南郑州");//通过SqlSession操作数据库sqlSession.insert("test.insertUser", user);sqlSession.commit();//获取用户信息主键System.out.println("主键:" + user.getId());//释放资源sqlSession.close();}
二、非自增主键的返回(使用UUID())
使用MYSQL的uuid()函数生成主键,需要修改表中的id字段类型为varchar,长度设置成35位。
执行思路:
先通过uuid()查询到主键,将主键输入到sql语句中。
执行uuid()语句顺序相对于insert()语句之前执行。
1、新增测试类并建立数据表
执行思路:
先通过uuid()查询到主键,将主键输入到sql语句中。
执行uuid()语句顺序相对于insert()语句之前执行。
1、新增测试类并建立数据表
package cn.sunft.mybatis.po;public class Student {private String id;private String name;public Student() {super();}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}2、在User.xml中添加如下SQL配置信息
<insert id="insertStudent" parameterType="cn.sunft.mybatis.po.Student"> <!-- 使用MySQL的uuid()生成主键 执行过程: 首先通过uuid()得到主键,将主键设置到student对象的id字段中 其次在insert执行时,从user对象中取出id属性插入数据库 --> <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> SELECT uuid() </selectKey> insert into student(id, name) value(#{id}, #{name}) </insert>3、编写测试类进行测试
/** * 添加用户信息 */@Testpublic void insertStudentTest(){//mybatis配置文件String resource = "SqlMapConfig.xml";//得到配置文件,这种方式与路径耦合//InputStream inStream = Resources.getResourceAsStream(resource);//与路径解耦InputStream inStream = this.getClass().getClassLoader().getResourceAsStream(resource);//创建会话工厂SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(inStream);//创建工厂//通过工厂得到SqlSessionSqlSession sqlSession = factory.openSession();//插入学生对象Student student = new Student();student.setName("江东才");//通过SqlSession操作数据库sqlSession.insert("test.insertStudent", student);sqlSession.commit();//获取用户信息主键System.out.println("主键:" + student.getId());//释放资源sqlSession.close();}通过Oracle序列生成主键:
<insert id="insertStudent" parameterType="cn.sunft.mybatis.po.Student"> <!-- 使用Oracle的序列生成主键 --> <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> SELECT 序列名.nextVal() </selectKey> insert into student(id, name) value(#{id}, #{name}) </insert>Mybatis获取返回的主键的另一种方式(未测试):
<!-- 插入语句,告诉mybatis将生成的主键返回到指定对象的id属性中 --><insert id="insert" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="com.sunft.bean.Command"> insert into CAMMAND(NAME,DESCRIPTION) values(#{name},#{description})</insert>
阅读全文
0 0
- Mybatis之主键的返回(6)
- mybatis之主键返回
- MyBatis之主键返回
- mybatis 主键的返回
- mybatis主键的返回
- Mybatis之insert返回主键
- Mybatis之foreach批量insert,返回主键id列表(修复Mybatis返回null的bug)
- mybatis如何实现mysql数据库的主键返回主键返回
- Mybatis+mysql之insert返回主键id
- MyBatis insert 返回主键的方法
- MyBatis insert 返回主键的方法
- MyBatis+MySQL 返回插入的主键ID
- MyBatis+MySQL 返回插入的主键ID
- MyBatis返回插入的数据主键
- MyBatis+MySQL 返回插入的主键ID
- MyBatis insert 返回主键的方法
- MyBatis+MySQL 返回插入的主键ID
- MyBatis+MySQL 返回插入的主键ID
- github基础操作
- linux-find命令
- linux命令--mkdir 与文件权限
- Bailian2686 打印完数【暴力】
- tomcat又乱码了【更新】
- Mybatis之主键的返回(6)
- Mybatis之批量新增数据(7)
- Bailian2721 忽略大小写比较字符串大小【字符串】(POJ NOI0107-16)
- Mybatis之删除数据(8)
- vivo X20Plus逆光旅拍季芝加哥站,看摩天大楼中的逆光大片
- 视频时代不容错过,亚马逊AWS加入5个视频处理工具
- iOS越狱源关闭,越狱的时代已经过去了
- 搜狗知音与海尔U+开启战略合作,人工智能开始进入中国智慧家庭
- 荣耀 V10 正式推出,华为欲借 AI 在机海中突围