mybatis增删改

  • 概念:

    • 功能:从应用程序角度出发,软件具有哪些功能;
    • 业务:完成功能时的逻辑,对应service的一个方法;
    • 事务:从数据库角度出发,完成业务时需要执行的SQL集合,统称一个事务。
  • mybatis 底层是对 JDBC 的封装
    • JDBC 中 executeUpdate()执行新增,删除,修改的 SQL.返回值 int,表示受影响的行数。
    • 所以mybatis 中<insert><delete><update>标签没有 resultType 属性,默认返回值都是 int。
  • 增加一条信息
    • 使用<insert>标签

      <insert id="ins" parameterType="People">
      insert into people values(default,#{name},#{age})
      </insert>
       People people = new People();
      people.setName("新增name");
      people.setAge(88);
      try {
      int insert = session.insert("com.bjm.mapper.ins", people);
      if (insert>0) {
      System.out.println("成功");
      }else {
      System.out.println("失败");
      }
      } catch (Exception e) {
      session.rollback();
      }
      session.commit();
      session.close();
    • 在 openSession()时 Mybatis 会创建 SqlSession 时同时创建一个Transaction(事务对象),同时 autoCommit 都为 false,这也就是mybatis将JDBC的自动提交关闭,需要session.commit();让session进行提交。
    • 为了避免错误提交,使用session.rollback();事务回滚
  • 删除一条信息
    • 使用<delete>标签

       <delete id="del" parameterType="People">
      delete from people where id=#{0}
      </delete>
       try {
      int delete = session.delete("com.bjm.mapper.del", 2);
      if (delete > 0) {
      System.out.println("成功");
      }else {
      System.out.println("失败");
      }
      } catch (Exception e) {
      session.rollback();
      }
    • 由于删除操作是根据id查找一条数据,所以使用#{0}
  • 修改一条信息
    • 使用<update>标签

       <update id="upd" parameterType="People">
      update people set name = #{name} where id = #{id}
      </update>
       People people = new People();
      people.setId(3);
      people.setName("王二麻子");
      try {
      int update = session.update("com.bjm.mapper.upd", people);
      if (update > 0) {
      System.out.println("成功");
      }else {
      System.out.println("失败");
      }
      } catch (Exception e) {
      session.rollback();
      }
      session.commit();
      session.close();

mybatis学习笔记(三)的更多相关文章

  1. MyBatis学习笔记(三) 关联关系

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001 没事看看 - MyBatis工具:www.mybatis.tk h ...

  2. MyBatis学习笔记(三) Configuration类

    一.初探Configuration类 我们先来看一下MyBatis的XML配置文件的结构,(摘自mybatis.org) 下面这个是Configuration类的部分变量 一点不一样是不是??? 其实 ...

  3. mybatis学习笔记三(关联关系)

    学习mybatis的关联关系,主要注解在代码上,这里不做解释.配置文件一样的就不贴了 1.关联关系表创建(学生对应老师 多对一) 学生老师表 2.表对应的实体类 package com.home.en ...

  4. Mybatis学习笔记(三) —— DAO开发方法

    一.SqlSession的使用范围 SqlSession中封装了对数据库的操作,如:查询.插入.更新.删除等. SqlSession通过SqlSessionFactory创建. SqlSessionF ...

  5. Mybatis学习笔记三

    一.延迟加载 延迟加载即加载延迟了,并不是一次性加载完而是按需加载,感觉应该是针对多表查询而言的,即先查询单表等需要另一张表的信息时再去加载,这样能提高数据库的性能: 需要注意的是,mybatis提供 ...

  6. mybatis学习笔记(三)-- 优化数据库连接配置

    原来直接把数据库连接配置信息写在conf.xml配置中,如下 <?xml version="1.0" encoding="UTF-8"?> < ...

  7. MyBatis学习笔记(三)——优化MyBatis配置文件中的配置

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4264301.html 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的 ...

  8. mybatis 学习笔记(三):mapper 代理开发 dao 层

    mybatis 学习笔记(三):mapper 代理开发 dao 层 优势 通过使用mapper 代理,我们可以不需要去编写具体的实现类(使用 getMapper() 方法自动生成),只需编写接口即可, ...

  9. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  10. Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)

    一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...

随机推荐

  1. 阿里巴巴 -- MySQL DBA 面试题

    1.MySQL的复制原理以及流程 (1).先问基本原理流程,3个线程以及之间的关联: (2).再问一致性延时性,数据恢复: (3).再问各种工作遇到的复制bug的解决方法. 2.MySQL中myisa ...

  2. Python入门基础(3 下)

    接着讲列表里面的一些操作吧 列表元素访问与计数 1.统计指定元素在列表中出现的次数使用count(),这就不必细说了,直接看代码,需要记住的是括号里面放的是元素 list = [1,5,5,5,5,8 ...

  3. Python 爬虫从入门到进阶之路(十八)

    在之前的文章我们通过 scrapy 框架 及 scrapy.Spider 类做了一个<糗事百科>的糗百爬虫,本章我们再来看一下相较于 scrapy.Spider 类更为强大的 CrawlS ...

  4. Android安卓书籍推荐《Android驱动开发与移植实战详解》下载

    百度云下载地址:点我 Android凭借其开源性.优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为市场占有率很高的智能手机操作系统. <Android驱动开发与 ...

  5. nu.xom:Document

    Document: 机翻 Document(Document doc):创建此文档的副本. Document(Element root):使用指定的根元素创建新的Document对象. DocType ...

  6. Your project specifies TypeScriptToolsVersion 2.3, but a matching compiler ...... 出现这种警告解决方式

  7. python3.5学习笔记(第六章)

    本章内容: 正则表达式详解(re模块) 1.不使用正则表达式来查找文本的内容 要求从一个字符串中查找电话号码,并判断是否匹配制定的模式,如:555-555-5555.传统的查找方法如下: def is ...

  8. javascript案例之照片墙

    效果图: ----------------------------------------------------------------------------------------------- ...

  9. MediatR-进程内的消息通信框架

    MediatR是一款进程内的消息订阅.发布框架,提供了Send方法用于发布到单个处理程序.Publish方法发布到多个处理程序,使用起来非常方便.目前支持 .NET Framework4.5..NET ...

  10. CF392BTower of Hanoi(记忆化搜索)

    CF392B 记搜好题 预处理 题目给出了将一个盘从x移到y的代价(代码中为a[][]),当我们知道这并不是最优的 就像最短路floyd一样松弛操作预处理得到两柱之间最优值b[][] for(int ...