增删改

Mybatis为我们提供了<insert>、<update>、<delete>标签来对应增删改操作

在接口中写增删改的抽象方法

  1. void addEmp(Employee e);  
  2. void updateEmp(Employee e);  
  3. void deleteEmp(Employee e);  

在映射文件中写sql语句

  1. <insert id="addEmp" parameterType="com.figsprite.bean.Employee">  
  2.     insert into tb_employee(last_name,email,gender)  
  3.     values(#{lastName},#{email},#{gender})  
  4. </insert>  
  5. <update id="updateEmp" parameterType="com.figsprite.bean.Employee">  
  6.     update tb_empolyee  
  7.       set last_name=#{lastName},email=#{email},gender=#{genser}  
  8.       where id=#{id}  
  9. </update>  
  10. <delete id="deleteEmp" parameterType="com.figsprite.bean.Employee">  
  11.     delete from tb_employee where id=#{id}  
  12. </delete>

顾名思义,parameterType就是参数类型,而我们通过#{字段名}的方式来传递对象中的属性,resultType允许使用String、Boolean等基本类型包作为返回值

测试

  1. @Test  
  2.     public void test3() throws IOException{  
  3.         SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();  
  4.         SqlSession openSession = sqlSessionFactory.openSession();  
  5.         Employee e = new Employee();  
  6.         e.setGender("1");  
  7.         e.setLastName("Hello");  
  8.         e.setEmail("qwewqeqw");  
  9.         e.toString();  
  10.         try {  
  11.             EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);  
  12.             mapper.addEmp(e);  
  13.             openSession.commit();  
  14.         }finally {  
  15.             openSession.close();  
  16.         }  
  17.     }  
  1. @Test  
  2.     public void test4() throws IOException{  
  3.         SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();  
  4.         SqlSession openSession = sqlSessionFactory.openSession();  
  5.         Employee e = new Employee();  
  6.         e.setId(1);  
  7.         e.setGender("0");  
  8.         e.setEmail("qwq");  
  9.         e.setLastName("Jerry");  
  10.         try {  
  11.             EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);  
  12.             mapper.updateEmp(e);  
  13.             openSession.commit();  
  14.         }finally {  
  15.             openSession.close();  
  16.         }  
  17.     }  

这里我们要自动提交数据,我们也可以选择SqlSession openSession = sqlSessionFactory.openSession(true); 这样就不用手动提交了。

  1. @Test  
  2. public void test5 ()throws IOException{  
  3.     SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();  
  4.     SqlSession openSession = sqlSessionFactory.openSession();  
  5.     Employee e = new Employee();  
  6.     e.setId(1);  
  7.     try{  
  8.         EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);  
  9.         mapper.deleteEmp(e);  
  10.         openSession.commit();  
  11.     }finally {  
  12.         openSession.close();  
  13.     }  

insert获取自增主键值

我们在上面的例子中可以看到,我们插入时候并没有指定id,因为我们id是通过自增方式,JDBC里面提供了这样的方法

ResultSet getGeneratedKeys()

MyBatis也支持,当然它的底层,其实就是这个函数,我们仅需在<insert>标签里添加属性即可

useGeneratedKeys="true"

使用自增主键获取主键值策略,接着用keyProperty这个属性,指定对应主键属性,也就是Mybatis获取到逐渐使以后将它赋给JavaBean的对应属性

  1. <insert id="addEmp" parameterType="com.figsprite.bean.Employee"  
  2.     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获取自增主键值)相关推荐

  1. Oracle获取insert的值,在Oracle中,如何从AFTER INSERT触发器获取插入的主键值?

    我的Oracle数据库有一个表 DOC_WF_COMM 它的主键是 DWFC_ID SQ_DOC_WF_COMM . 我已经创建了行级别 AFTER INSERT 在该表上和触发器内部,我需要将插入的 ...

  2. java获取mysql表的主键_Spring中获取数据库表主键序列

    在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...

  3. MyBatis insert 获取自增主键

    1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...

  4. Mybatis 映射文件

    Mapper 就是"映射"的意思,Mapper 文件时 Mybatis 中的 SQL 语句的配置文件,其会在运行时加载 SQL 语句并映射相应参数.在 Mybatis 的全局配置文 ...

  5. 3、JavaWeb中Service层的作用、MyBatis的重要组件、mybatis-config.xml中的别名映射、properties配置、#{}和${}的区别、获取插入数据的主键值

    文章目录 1.Service层的作用 2.MyBatis重要组件 Resources SqlSessionFactoryBuilder SqlSessionFactory SqlSession 针对上 ...

  6. MyBatis 获取数据库中自增主键值

    一.在 SQL 映射文件的 select 标签中添加 useGeneratedKeys="true" 属性与 keyProperty=" " 属性,keyPro ...

  7. MyBatis映射文件(一)

    目录 一.MyBatis映射文件 1.insert.update.delete元素 2.主键生成方式 3.参数(Parameters)传递 (1)单个参数 (2)多个参数 (3)命名参数 (4)POJ ...

  8. 3 了解MyBatis映射文件

    3.1 认识映射文件: 介绍:     MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC ...

  9. mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列

    parameterType: 参数类型, 可以省略 mysql支持自增主键,自增主键的获取, mybatis也是利用statement.getGenreatedKeys();  useGenerate ...

最新文章

  1. python手动将机器学习模型保存为json文件
  2. mina 中的IoBufer(一)
  3. Pandas.DataFrame转置
  4. python——模块
  5. 个人觉得好的文章链接推荐【转载,侵权立删】
  6. WIN10自带远程桌面实现多用户登录
  7. 州的先生 python界面 代码完整版(注释)
  8. PHP控制网页过期时间的代码!
  9. [TCO2013]TrickyInequality
  10. Qt5学习笔记之串口助手三:打包成Windows软件
  11. 蓝桥杯单片机必学——C语言例题(一)
  12. 微信小程序之去除抖音、快手等视频平台水印!
  13. MySQL数据库简单使用
  14. make px4fmu-v2_default报错:ninja:no work to do
  15. CS5265的Type-C转HDMI2.0方案
  16. 【转载】古典浏览器缓存和Service Worker对比
  17. Linux 磁盘阵列、逻辑卷
  18. 熬了五年,马同学第一本书出版了!
  19. R语言R原生plot函数和lines函数的主要参数说明、解析(type、pch、cex、lty、lwd、col、xlab、ylab)
  20. 如何使用字体图标做一个淘宝购物车案例

热门文章

  1. 计算机专用英语词汇pdf,计算机专用英语词汇1500词.pdf
  2. Linux进阶之路————CentOS网络配置
  3. mac 黑窗口连接mysql_mac上终端起动MySQL的方法
  4. vue内检测是否有swiper_vue.js怎么用swiper
  5. cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断
  6. 荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...
  7. 计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程
  8. java需求设计_JavaWeb期末设计---需求分析文档. stage1
  9. 触发器及其应用实验报告总结_双面喷绘材料的分类及其应用,超全总结!(建议收藏)...
  10. 计算机网络项目化实训教程,计算机网络项目实训教程