Mybitis(iBitis)实现对对象增删改查操作要借助<select/>查询,<insert/>增加,<update/>更新,<delete/>删除 标签来操作。

值得注意的有两点:
  1、在对对象进行增删改时,SqlSession session = sqlSessionFactory.openSession();获取的session。必选执行session.commit();否则操作无效。
  2、Mybitis与hibernate一样,插入数据后会把id值赋值给缓存中对象

还是接着上一讲的代码继续改动
UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="user">
  6. <resultMap id="userResultMap" type="user">
  7. <id property="id" column="id"/>
  8. <result property="userName" column="name"/>
  9. <result property="password" column="pass"/>
  10. </resultMap>
  11. <!--resultType 表示com.jefry.User这样一个实体对象 -->
  12. <select id="selectUser" parameterType="int"  resultMap="userResultMap" >
  13. select * from t_user where id = #{id}
  14. </select>
  15. <!--增加操作-->
  16. <insert id="addUser" parameterType="user"
  17. useGeneratedKeys="true" keyProperty="id">
  18. insert into t_user(name,pass) values(#{userName},#{password})
  19. </insert>
  20. <!--更新操作-->
  21. <update id="modifyUser" parameterType="user">
  22. update t_user set name=#{userName}, pass=#{password} where id=#{id}
  23. </update>
  24. <delete id="deleteUser" parameterType="int">
  25. delete from t_user where id=#{id}
  26. </delete>
  27. </mapper>

测试代码

  1. public class Test {
  2. static String resource = "mybatis-config.xml";
  3. public static void main(String[] args) throws IOException {
  4. // TODO Auto-generated method stub
  5. InputStream inputStream = Resources.getResourceAsStream(resource);
  6. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  7. SqlSession session = sqlSessionFactory.openSession();
  8. try {
  9. //User.selectUser中User对应UserMapper.xml文件中标签<mapper namespace="User"> namespace的值
  10. //selectUser 对应UserMapper.xml文件中标签<select id="selectUser" parameterType="int" resultType="com.jefry.User">中id值
  11. User user = session.selectOne("user.selectUser", 1);
  12. System.out.println("user.getName()=" +  user.getPassword());
  13. User addUser = new User();
  14. addUser.setUserName("NEWWWWW");
  15. addUser.setPassword("111111");
  16. session.insert("user.addUser", addUser);
  17. //插入操作
  18. User modifyUser = new User();
  19. modifyUser.setUserName("NEWWWWW");
  20. modifyUser.setPassword("111111");
  21. modifyUser.setId(1);
  22. //修改用户
  23. session.update("user.modifyUser", addUser);
  24. //删除操作
  25. session.delete("user.deleteUser",2);
  26. //这里必须commit,否则增删改无效
  27. session.commit();
  28. //与hibernate一样,插入数据后会把id值赋值给缓存中的id
  29. System.out.println("addUser.getId()" + addUser.getId() );
  30. } finally {
  31. session.close();
  32. }
  33. }
  34. }

MyBitis(iBitis)系列随笔之三:简单实现CRUD的更多相关文章

  1. MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)

    MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...

  2. MyBitis(iBitis)系列随笔之六:mybitis与spring集成

    目前Spring官方还没有出整合Mybatis的特性,但是mybitis比较给力,开发了一个mybatis-spring插件,达到与Spring的完美整合目的. 在与Spring集成前,一方面我们需要 ...

  3. MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)

    类型别名(typeAliases):     作用:通过一个简单的别名来表示一个冗长的类型,这样可以降低复杂度.    类型别名标签typeAliases中可以包含多个typeAlias,如下 < ...

  4. MyBitis(iBitis)系列随笔之一:MyBitis入门实例

        MyBits前身是iBitis,相对于Hibernate而言,它是半自动化ORM框架.本着分享和学习的目的,笔者将陆续把学习笔记与代码贴出,希望对想学习mybitis的同窗们有所帮助.     ...

  5. MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)

      前面几篇博客介绍的都是单表映射的一些操作,然而在我们的实际项目中往往是用到多表映射.至于多表映射的关键要用到mybitis的association来加以实现.          这篇介绍的是多表中 ...

  6. 8天掌握EF的Code First开发系列之2 简单的CRUD操作

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...

  7. Mongodb系列- java客户端简单使用(CRUD)

    Mongodb提供了很多的客户端: shell,python, java, node.js...等等. 以 java 为例实现简单的增删改查 pom文件: <dependencies> & ...

  8. 使用Beautiful Soup编写一个爬虫 系列随笔汇总

    这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...

  9. RabbitMQ系列教程之三:发布/订阅(Publish/Subscribe)(转载)

    RabbitMQ系列教程之三:发布/订阅(Publish/Subscribe) (本教程是使用Net客户端,也就是针对微软技术平台的) 在前一个教程中,我们创建了一个工作队列.工作队列背后的假设是每个 ...

随机推荐

  1. oracle修改用户密码过期时间

    Oracle默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”,导致密码过期,程序无法使用,业务进程会提示无法连接数据库等字样. --查询默认密码过期时间 SELE ...

  2. PHP-php.ini中文版

    今天细看了下配置文件 有很多没用过的 就从网上搜了一篇 常看看 ;;;;;;;;;;;;;;;; 简介 ;;;;;;;;;;;;;;;;; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众 ...

  3. public static void main(String args[])什么意思?

    public static void main(String[] args) 这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要. jvm在试图运行一个类之前,先检查该类是否包 ...

  4. 工作总结 @{var sas = String.Format("{0:yyyy-MM-dd}", Model.DemandTime.GetValueOrDefault());}

      可空DateTime类型 无法Tostring 或者 格式化时间格式   需要转换 为DateTime Nullable<T>.GetValueOrDefault() 方法 返回对应的 ...

  5. python --curl重定向到文件范例

      import sys import os import subprocess import time start = time.time() old=sys.stdout f=open('test ...

  6. RFID编码

    信号编码系统包括信源编码和信道编码两大类,器作用是把要传输的信息尽可能的与传输信道相匹配,并提供对信息的某种保护以防止信息受到干扰.信源编码与信源译码的目的是提高信息传输的有效性以及完成模数转换等:信 ...

  7. LDO和BUCK降压稳压器对比

    LDO和BUCK降压稳压器对比 在采用MCU/DSP/FPGA设计的控制系统中,低压输入级(一般在12V以下),输出5V/3.3V/1.8V/1.5V/1.2V的电路中,常用的电源芯片是BUCK(降压 ...

  8. C#中将图片转化成base64字符串

    厂址:http://www.cnblogs.com/yunfeifei/p/4165351.html 1.在C#中将图片转化成base64字符串: using System; using System ...

  9. atitit..sql update语法的词法分析,与语法ast构建

    atitit..sql update语法的词法分析,与语法ast构建 1. 要使用sql udpate语法的dsl ,需要写个解释器.. 1 2. 词法分析的实现 1 2.1. 扫描器的实现 SqlU ...

  10. Linux Kernel源码浏览

    https://www.kernel.org/http://lxr.linux.no/