Batis-iBatis基本操作(增删改查)
Batis-iBatis基本操作(增删改查)
在上一篇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基本操作(增删改查)相关推荐
- mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...
- mongodb基本操作=增删改查
这两天总算清闲下来了,这里只介绍mongodb的一些基本增删改查,从大到小,从数据库到下面的集合表等,这里推荐一个mongodb的可视化工具Robo3T,在上面操作增删改查使用起来也简单 数据库相关的 ...
- MongoDB基本操作(增删改查)
2019独角兽企业重金招聘Python工程师标准>>> 基本操作 基本的"增删查改",在DOS环境下输入mongo命令打开shell,其实这个shell就是mon ...
- MongoDB 基本操作增删改查
import pymongomongo_client = pymongo.MongoClient(host="127.0.0.1",port=27017)DB = mongo_cl ...
- c语言实现双链表的基本操作—增删改查
//初始化 Node*InitList() {Node*head=(Node*)malloc(sizeof(Node));if(NULL==head){printf("内存分配失败!&quo ...
- flask中数据库的基本操作-增删改查【备忘】
1.增加数据(就相当于增加一个实例对象) user1 = User(name='long',email='1006550026@qq.com',password='123456',role_id= ...
- HBase数据库的基本操作增删改查
# 进入hbase命令行,hbase需要在环境变量路径中 >hbase shell 表操作 # 显示hbase中的表 > list# 创建user表,包含info.data两个列族 > ...
- mongodb不等于某个值_MongoDB的安装以及基本增删改查命令
MongoDB 介绍 mongodb 和大多数NoSQL 数据库(redis,memcached 等)一样,都是以 kv数据库(key/value) 存储数据 不同的是mongodb 文档数据库,存储 ...
- mongodb学习笔记之增删改查作指令
1: mongo入门命令 1.1: show dbs 查看当前的数据库 1.2 use databaseName 选库 1.2 show tables/collections 查看当前库下的coll ...
- java中的数组增删查改操作,java数组实现增删改查
java 实现动态数组,Java工具类Arrays中不得不知的常用方法,数组实现队列java,java数组实现增删改查 java 增删改查代码 import java.sql.Connection; ...
最新文章
- BoW图像检索Python实战
- php与js的关系,Php与Js的交互
- C# 视频监控系列(6):服务器端——封装API(上)(1)
- Prototype(原型)--对象创建模式
- python安装oracle驱动_Python安装Oracle数据库驱动
- 懂编译真的可以为所欲为|不同前端框架下的代码转换
- shell脚本的一些用法笔记
- C++_class Template about Stack(使用类模板实现栈操作)
- 代码积累与编程能力哪个更重要
- 猎豹java数据结构,猎豹网校C++数据结构与算法42讲视频教程
- linux入门目录汇总
- MapGIS 6.7 数字非标准分幅影像校正方法
- 计算机科学与技术专业知识好学吗,计算机科学与技术好学吗
- Redis 模糊查询Key
- 计算机二级考试office考试技巧,2017年计算机二级考试Office应试技巧
- 网络创业者之家:互联网创业的优势与不足,你真到了解吗?
- Apache HBase JavaAPI 查询数据
- [精选]万能节日国庆头像小程序(可引流,开通流量主,带pc后台管理)
- sqlserver找不到存储过程
- 计算机电源管理最高续航,高效电源管理 vivo TWS Neo最大支持27小时续航
热门文章
- php案例纠错,PHP编程纠错指南
- go 是常驻内存吗_图解 Go 内存分配器
- mysql ibtmp1 太大_mysql5.7 ibtmp1文件过大
- 如何接受上级指令_与上级沟通的技巧
- oracle concat函数用法_大白的函数笔记:文本合并就是这么简单,不会的快来学...
- 接口规范 6. 查看在线用户
- 计算机基础知识教程算法,快速掌握!计算机二级公共基础知识教程:算法
- Linux学习笔记---使用BusyBox创建根文件系统(四)
- Hadoop3——集群搭建以及初体验
- 转 ajax.dll 与 ajaxpro.dll的用法