Batis-iBatis基本操作(增删改查)

时间 2014-04-10 17:55:20  CSDN博客
原文  http://blog.csdn.net/mazhaojuan/article/details/23354759
主题 MyBatis 数据库 测试技术

在上一篇iBatis博客中已介绍了如何 配置iBatis环境 ,这篇博客主要进行介绍一些iBatis的基本操作实现。iBatis的增删改操作都需要操作SqlMap,DAO层Manger,POJO 这几个类来实现。 下面分别介绍一下iBatis基本操作的实现:

一.iBatis的添加数据方式

这里介绍两种iBatis添加数据的方式:基本方式,添加用户信息;通过map方式,添加用户信息。

若要使用iBatis执行任何CRUD(创建、查询、更新、删除)操作,需要创建一个POJO类。如下:

1.建立POJO对象--User

package com.azj.test;/*** 用户实体类* @author AZJ**/
public class User {  /**  * 唯一标识  */  private String id;  /**  * 名字  */  private String firstName;  /**  * 姓  */  private String lastName;  /**  * 电子邮件  */  private String email;  /**  * 照片信息  */  private String img;   public String getId() {   return id;  }  public void setId(String id) {   this.id = id;  }  public String getFirstName() {   return firstName;  }  public void setFirstName(String firstName) {   this.firstName = firstName;  }  public String getLastName() {   return lastName;  }  public void setLastName(String lastName) {   this.lastName = lastName;  }   public String getEmail() {   return email;  }  public void setEmail(String email) {   this.email = email;  }  public String getImg() {   return img;  }  public void setImg(String img) {   this.img = img;  }  }

2.上面User POJO类对应的数据库表为

3.在SqlMap中添加添加用户信息的方法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="User">  <!-- 使用别名可以避免每次都输入类路径全称 -->  <typeAlias alias="User" type="com.azj.test.User"/>   <!-- 添加用户信息 -->  <insert id="addUsers" parameterClass="User">   INSERT INTO A_USER(    ID,    FIRST_NAME,    LAST_NAME,    EMAIL   ) VALUES(    #id#,    #firstName#,    #lastName#,    #email#   )  </insert>  <!-- 通过map方式,添加用户信息 -->  <insert id="addUsersByMap" parameterClass="java.util.HashMap">   INSERT INTO A_USER(    ID,    FIRST_NAME,    LAST_NAME,    EMAIL   ) VALUES(    #id#,    #firstName#,    #lastName#,    #email#   )  </insert>   </sqlMap>

4.编写Manager类

Manager类数据DAO层,连接数据库,对数据库进行增删改查操作。类中添加两种添加用户信息的方法,与SqlMap中添加用户方法对应:

package com.azj.test;import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List; import java.util.Map; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; /** * Dao层,连接数据库,对数据库进行增删改查操作 * @author azj * */ public class Manager { //使用sqlMapClient,此类线程安全,所以可以定义成静态的  private static SqlMapClient sqlMaper;   //静态块,初始化 sqlMaper;在类加载的时候执行一次  static{   try{    Reader reader=Resources.getResourceAsReader("sqlMapConfig.xml");    sqlMaper=SqlMapClientBuilder.buildSqlMapClient(reader);    reader.close();      }catch(IOException e){    throw new RuntimeException(e);   }  }   /**  * 添加用户信息  * @throws SQLException  */ public static void addUser(User user) throws SQLException{   sqlMaper.insert("addUsers",user);//与SqlMap中添加用户信息方法对应  } /** * 通过map方式,添加用户信息 * @param userMap * @throws SQLException */ public static void addUserByMap(Map userMap) throws SQLException{  sqlMaper.insert("addUsersByMap", userMap); //与SqlMap中添加用户信息方法对应 } }

5.添加测试类,测试用户信息是否添加成功

package com.azj.test;import java.util.HashMap;
import java.util.Map;import junit.framework.TestCase;public class TestInsert extends TestCase {  /**  * 添加用户信息  */  public void testInsertUser(){   User user=new User();   user.setId("1");   user.setFirstName("子");   user.setLastName("李");   user.setEmail("m@sina.com");     try{    Manager.addUser(user);      }catch(Exception e){    e.printStackTrace();   }    }   /**  * 通过map方式,添加用户信息  */  public void testInsertUserByMap(){     Map userMap=new HashMap();     userMap.put("id", "2");   userMap.put("firstName", "芳芳");   userMap.put("lastName","王");   userMap.put("email", "value@163.com");         try{    Manager.addUserByMap(userMap);      }catch(Exception e){    e.printStackTrace();   }    }  }

通过JUnit单元测试,执行此测试文件,可以看出用户信息添加成功!通过JUnit控制台打印信息如图:

数据库表信息添加的用户信息如图:

二.iBatis查询数据方式

这里介绍4种查询用户信息的方式:根据id查询用户信息,根据实体类(用户)查询用户信息,查询所有用户信息(list 和map方式)。

1.POJO对象见iBatis添加数据方式

2.数据表信息

3. 在SqlMap中添加查询用户信息的方法

<resultMap id="UserResult" class="User" >   <result property="id" column="ID"/>   <result property="firstName" column="FIRST_NAME"/>   <result property="lastName" column="LAST_NAME"/>   <result property="email" column="EMAIL"/>  </resultMap>  <!-- 根据id查询用户信息 -->  <select id="selectUserById" parameterClass="java.lang.String" resultMap="UserResult">   SELECT * FROM A_USER WHERE ID=#id#  </select>   <!-- 根据实体类(用户)查询用户信息 -->  <select id="selectUserByUser" parameterClass="User" resultMap="UserResult">   SELECT * FROM A_USER WHERE ID=#id#  </select>   <!-- 查询所有用户信息 -->  <select id="selectUsers" resultMap="UserResult">   SELECT * FROM A_USER  </select>

4.在Manager类中添加查询用户信息的方法

//因其线程安全,设置为静态方法
  /**
   * 根据id查询用户信息
 * @param id  * @return  * @throws SQLException  */  public static User selectUserById(String id) throws SQLException{   return (User) sqlMaper.queryForObject("selectUserById",id);    }   /**  * 根据用户实体类查询用户实体  * @param user  * @return  * @throws SQLException  */  public static User selectUserByUser(User user) throws SQLException{   return (User) sqlMaper.queryForObject("selectUserByUser",user);  }  /**  * 查询所有用户信息,放于list中  * @param user  * @return  * @throws SQLException  */  public static List selectUsers() throws SQLException{   return sqlMaper.queryForList("selectUsers");  }   /**  * 查询所有用户信息,放于Map中  * @return  * @throws SQLException  */  public static Map selectUserForMap() throws SQLException{     return sqlMaper.queryForMap("selectUsers", null, "id");  }

5.编写测试类,测试查询用户信息是否成功

package com.azj.test;import java.util.List;
import java.util.Map;import junit.framework.TestCase;/** * 测试查询用户信息 * * @author azj */ public class TestManager extends TestCase {  public void testSelectUserById() {   try {    User user = Manager.selectUserById("1");    System.out.println(user);    System.out.println(user.getFirstName());   } catch (Exception e) {    e.printStackTrace();   }  }  /**  * 根据实体类查询用户信息  */  public void testSelectUserByUser() {   try {    User userParmUser = new User();    userParmUser.setId("2");    User user = Manager.selectUserByUser(userParmUser);    System.out.println(user);    System.out.println(user.getFirstName());   } catch (Exception e) {    e.printStackTrace();   }  }  /**  * 查询用户信息放于List中  */  public void testSelectUsers() {   try {    List userList = Manager.selectUsers();    User user = (User) userList.get(1);    System.out.println(user);    System.out.println(user.getFirstName());   } catch (Exception e) {    e.printStackTrace();   }  }  /**  * 查询用户信息放于Map中  */  public void testSelectUsersMap() {   try {    Map userMap = Manager.selectUserForMap();    // 将ID为1的用户查出来    User user = (User) userMap.get("1");    System.out.println(user);    System.out.println(user.getFirstName());   } catch (Exception e) {    e.printStackTrace();   }  } }

通过JUnit测试,可看出查询方法正确,查询结果均如下所示:

三.iBatis修改数据方式

1.POJO对象见iBatis添加数据方式

2.数据表信息

3. 在SqlMap中添加修改用户信息的方法

<!-- 更新用户信息 -->
  <update id="updateUserByID" parameterClass="User">   UPDATE A_USER SET   FIRST_NAME=#firstName#,   LAST_NAME=#lastName#,    EMAIL=#email#    WHERE    ID=#id#  </update>

4.在Manager类中添加修改用户信息的方法

/*** 更新用户信息* @param user* @throws SQLException*/public static void updateUser(User user) throws SQLException{  sqlMaper.update("updateUserByID", user); }

5.编写测试类,测试修改用户信息是否成功

/**
* 更新用户信息
*/
public void testUpdateUser(){
  User user=new User();  user.setId("1");  try{   user=Manager.selectUserByUser(user);      user.setFirstName("娟子");   user.setLastName("马");   user.setEmail("m2@sina.com");      Manager.updateUser(user);     }catch(Exception e){   e.printStackTrace();  }   }

通过JUnit测试,可看出修改成功!

四.iBatis删除数据方式

1.POJO对象见iBatis添加数据方式

2.数据表信息

3. 在SqlMap中添加删除用户信息的方法

<!--删除用户(多个)字符串拼接方式 -->
  <update id="deleteByString" parameterClass="java.lang.String">  DELETE FROM A_USER WHERE ID IN($id$)  </update>    <!-- 删除用户(多个)传参,标签说明使用,分割 ;以(开始,以)结束,解析的内容是id -->  <update id="deleteByList" parameterClass="java.util.List">   DELETE FROM A_USER WHERE ID IN   <iterate conjunction="," open="(" close=")">    #id[]#   </iterate>  </update>

4.在Manager类中添加删除用户信息的方法

/*** 删除用户信息,字符串拼接,容易产生sql注入* @param userId* @throws SQLException*/
public static void deleteUserByID(String userId) throws SQLException{  sqlMaper.update("deleteByString", userId); } /** * 删除用户信息,传参 * @param userList * @throws SQLException */ public static void deleteUserByList(List userList) throws SQLException{  sqlMaper.update("deleteByList", userList); }

5.编写测试类,测试删除用户信息是否成功

/**
   * 删除用户信息,拼接字符串
   */
  public void testDeleteUserById(){   try{    String idString="'1','2'";       Manager.deleteUserByID(idString);      }catch(Exception e){    e.printStackTrace();   }    }   /**  * 删除用户信息,传参  */  public void testDeleteUserByList(){     try{    List userList=new ArrayList();    userList.add("1");    userList.add("2");    Manager.deleteUserByList(userList);      }catch(Exception e){    e.printStackTrace();   }    }

通过JUnit测试,可看到用户信息成功删除!

iBatis的基本操作就简单介绍到这里吧!

转载于:https://www.cnblogs.com/BillLei/p/5943323.html

Batis-iBatis基本操作(增删改查)相关推荐

  1. mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)

    MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...

  2. mongodb基本操作=增删改查

    这两天总算清闲下来了,这里只介绍mongodb的一些基本增删改查,从大到小,从数据库到下面的集合表等,这里推荐一个mongodb的可视化工具Robo3T,在上面操作增删改查使用起来也简单 数据库相关的 ...

  3. MongoDB基本操作(增删改查)

    2019独角兽企业重金招聘Python工程师标准>>> 基本操作 基本的"增删查改",在DOS环境下输入mongo命令打开shell,其实这个shell就是mon ...

  4. MongoDB 基本操作增删改查

    import pymongomongo_client = pymongo.MongoClient(host="127.0.0.1",port=27017)DB = mongo_cl ...

  5. c语言实现双链表的基本操作—增删改查

    //初始化 Node*InitList() {Node*head=(Node*)malloc(sizeof(Node));if(NULL==head){printf("内存分配失败!&quo ...

  6. flask中数据库的基本操作-增删改查【备忘】

    1.增加数据(就相当于增加一个实例对象)   user1 = User(name='long',email='1006550026@qq.com',password='123456',role_id= ...

  7. HBase数据库的基本操作增删改查

    # 进入hbase命令行,hbase需要在环境变量路径中 >hbase shell 表操作 # 显示hbase中的表 > list# 创建user表,包含info.data两个列族 > ...

  8. mongodb不等于某个值_MongoDB的安装以及基本增删改查命令

    MongoDB 介绍 mongodb 和大多数NoSQL 数据库(redis,memcached 等)一样,都是以 kv数据库(key/value) 存储数据 不同的是mongodb 文档数据库,存储 ...

  9. mongodb学习笔记之增删改查作指令

    1: mongo入门命令 1.1: show dbs  查看当前的数据库 1.2 use databaseName 选库 1.2 show tables/collections 查看当前库下的coll ...

  10. java中的数组增删查改操作,java数组实现增删改查

    java 实现动态数组,Java工具类Arrays中不得不知的常用方法,数组实现队列java,java数组实现增删改查 java 增删改查代码 import java.sql.Connection; ...

最新文章

  1. BoW图像检索Python实战
  2. php与js的关系,Php与Js的交互
  3. C# 视频监控系列(6):服务器端——封装API(上)(1)
  4. Prototype(原型)--对象创建模式
  5. python安装oracle驱动_Python安装Oracle数据库驱动
  6. 懂编译真的可以为所欲为|不同前端框架下的代码转换
  7. shell脚本的一些用法笔记
  8. C++_class Template about Stack(使用类模板实现栈操作)
  9. 代码积累与编程能力哪个更重要
  10. 猎豹java数据结构,猎豹网校C++数据结构与算法42讲视频教程
  11. linux入门目录汇总
  12. MapGIS 6.7 数字非标准分幅影像校正方法
  13. 计算机科学与技术专业知识好学吗,计算机科学与技术好学吗
  14. Redis 模糊查询Key
  15. 计算机二级考试office考试技巧,2017年计算机二级考试Office应试技巧
  16. 网络创业者之家:互联网创业的优势与不足,你真到了解吗?
  17. Apache HBase JavaAPI 查询数据
  18. [精选]万能节日国庆头像小程序(可引流,开通流量主,带pc后台管理)
  19. sqlserver找不到存储过程
  20. 计算机电源管理最高续航,高效电源管理 vivo TWS Neo最大支持27小时续航

热门文章

  1. php案例纠错,PHP编程纠错指南
  2. go 是常驻内存吗_图解 Go 内存分配器
  3. mysql ibtmp1 太大_mysql5.7 ibtmp1文件过大
  4. 如何接受上级指令_与上级沟通的技巧
  5. oracle concat函数用法_大白的函数笔记:文本合并就是这么简单,不会的快来学...
  6. 接口规范 6. 查看在线用户
  7. 计算机基础知识教程算法,快速掌握!计算机二级公共基础知识教程:算法
  8. Linux学习笔记---使用BusyBox创建根文件系统(四)
  9. Hadoop3——集群搭建以及初体验
  10. 转 ajax.dll 与 ajaxpro.dll的用法