MyBatis映射文件1(增删改、insert获取自增主键值)
增删改
Mybatis为我们提供了<insert>、<update>、<delete>标签来对应增删改操作
在接口中写增删改的抽象方法
- void addEmp(Employee e);
- void updateEmp(Employee e);
- void deleteEmp(Employee e);
在映射文件中写sql语句
- <insert id="addEmp" parameterType="com.figsprite.bean.Employee">
- insert into tb_employee(last_name,email,gender)
- values(#{lastName},#{email},#{gender})
- </insert>
- <update id="updateEmp" parameterType="com.figsprite.bean.Employee">
- update tb_empolyee
- set last_name=#{lastName},email=#{email},gender=#{genser}
- where id=#{id}
- </update>
- <delete id="deleteEmp" parameterType="com.figsprite.bean.Employee">
- delete from tb_employee where id=#{id}
- </delete>
顾名思义,parameterType就是参数类型,而我们通过#{字段名}的方式来传递对象中的属性,resultType允许使用String、Boolean等基本类型包作为返回值
测试
- @Test
- public void test3() throws IOException{
- SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
- SqlSession openSession = sqlSessionFactory.openSession();
- Employee e = new Employee();
- e.setGender("1");
- e.setLastName("Hello");
- e.setEmail("qwewqeqw");
- e.toString();
- try {
- EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
- mapper.addEmp(e);
- openSession.commit();
- }finally {
- openSession.close();
- }
- }
- @Test
- public void test4() throws IOException{
- SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
- SqlSession openSession = sqlSessionFactory.openSession();
- Employee e = new Employee();
- e.setId(1);
- e.setGender("0");
- e.setEmail("qwq");
- e.setLastName("Jerry");
- try {
- EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
- mapper.updateEmp(e);
- openSession.commit();
- }finally {
- openSession.close();
- }
- }
这里我们要自动提交数据,我们也可以选择SqlSession openSession = sqlSessionFactory.openSession(true); 这样就不用手动提交了。
- @Test
- public void test5 ()throws IOException{
- SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
- SqlSession openSession = sqlSessionFactory.openSession();
- Employee e = new Employee();
- e.setId(1);
- try{
- EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
- mapper.deleteEmp(e);
- openSession.commit();
- }finally {
- openSession.close();
- }
- }
insert获取自增主键值
我们在上面的例子中可以看到,我们插入时候并没有指定id,因为我们id是通过自增方式,JDBC里面提供了这样的方法
ResultSet getGeneratedKeys()
MyBatis也支持,当然它的底层,其实就是这个函数,我们仅需在<insert>标签里添加属性即可
useGeneratedKeys="true"
使用自增主键获取主键值策略,接着用keyProperty这个属性,指定对应主键属性,也就是Mybatis获取到逐渐使以后将它赋给JavaBean的对应属性
- <insert id="addEmp" parameterType="com.figsprite.bean.Employee"
- useGeneratedKeys="true" keyProperty="id">
让我们做个测试
@Test
public void test3() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
Employee e = new Employee();
e.setGender("1");
e.setLastName("Hello");
e.setEmail("qwewqeqw");
e.toString();
try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
mapper.addEmp(e);
openSession.commit();
System.out.println(e.getId());
}finally {
openSession.close();
}
}
如果我们没有写useGenerateKeys和KeyProperty,那么上述代码打印出来的将会是null
转载于:https://www.cnblogs.com/figsprite/p/10733000.html
MyBatis映射文件1(增删改、insert获取自增主键值)相关推荐
- Oracle获取insert的值,在Oracle中,如何从AFTER INSERT触发器获取插入的主键值?
我的Oracle数据库有一个表 DOC_WF_COMM 它的主键是 DWFC_ID SQ_DOC_WF_COMM . 我已经创建了行级别 AFTER INSERT 在该表上和触发器内部,我需要将插入的 ...
- java获取mysql表的主键_Spring中获取数据库表主键序列
在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...
- MyBatis insert 获取自增主键
1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...
- Mybatis 映射文件
Mapper 就是"映射"的意思,Mapper 文件时 Mybatis 中的 SQL 语句的配置文件,其会在运行时加载 SQL 语句并映射相应参数.在 Mybatis 的全局配置文 ...
- 3、JavaWeb中Service层的作用、MyBatis的重要组件、mybatis-config.xml中的别名映射、properties配置、#{}和${}的区别、获取插入数据的主键值
文章目录 1.Service层的作用 2.MyBatis重要组件 Resources SqlSessionFactoryBuilder SqlSessionFactory SqlSession 针对上 ...
- MyBatis 获取数据库中自增主键值
一.在 SQL 映射文件的 select 标签中添加 useGeneratedKeys="true" 属性与 keyProperty=" " 属性,keyPro ...
- MyBatis映射文件(一)
目录 一.MyBatis映射文件 1.insert.update.delete元素 2.主键生成方式 3.参数(Parameters)传递 (1)单个参数 (2)多个参数 (3)命名参数 (4)POJ ...
- 3 了解MyBatis映射文件
3.1 认识映射文件: 介绍: MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC ...
- mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
parameterType: 参数类型, 可以省略 mysql支持自增主键,自增主键的获取, mybatis也是利用statement.getGenreatedKeys(); useGenerate ...
最新文章
- python手动将机器学习模型保存为json文件
- mina 中的IoBufer(一)
- Pandas.DataFrame转置
- python——模块
- 个人觉得好的文章链接推荐【转载,侵权立删】
- WIN10自带远程桌面实现多用户登录
- 州的先生 python界面 代码完整版(注释)
- PHP控制网页过期时间的代码!
- [TCO2013]TrickyInequality
- Qt5学习笔记之串口助手三:打包成Windows软件
- 蓝桥杯单片机必学——C语言例题(一)
- 微信小程序之去除抖音、快手等视频平台水印!
- MySQL数据库简单使用
- make px4fmu-v2_default报错:ninja:no work to do
- CS5265的Type-C转HDMI2.0方案
- 【转载】古典浏览器缓存和Service Worker对比
- Linux 磁盘阵列、逻辑卷
- 熬了五年,马同学第一本书出版了!
- R语言R原生plot函数和lines函数的主要参数说明、解析(type、pch、cex、lty、lwd、col、xlab、ylab)
- 如何使用字体图标做一个淘宝购物车案例
热门文章
- 计算机专用英语词汇pdf,计算机专用英语词汇1500词.pdf
- Linux进阶之路————CentOS网络配置
- mac 黑窗口连接mysql_mac上终端起动MySQL的方法
- vue内检测是否有swiper_vue.js怎么用swiper
- cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断
- 荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...
- 计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程
- java需求设计_JavaWeb期末设计---需求分析文档. stage1
- 触发器及其应用实验报告总结_双面喷绘材料的分类及其应用,超全总结!(建议收藏)...
- 计算机网络项目化实训教程,计算机网络项目实训教程