iBatis的CRUD操作详细总结
昨天晚上看了一下关于iBatis的一个讲解的视频,讲的和我的这个简单的总结差不多....
思考了一下还是把主要操作都总结一下吧,当然这里也不是全的,知识简单的CRUD。。。
首先我觉得持久层的操作主要就是这几个:
public interface IPersonDao {
//添加
public boolean addPerson(Person person);
//更新
public boolean updatePerson(Person person);
//删除 根据ID删除, 批量删除
public boolean deletePersonById(int id);
public boolean deleteAll(List<Integer> ids);
//查询,根据ID, name模糊查询, 查询所有, 多条件查询,分页查询
public Person queryById(int id);
public List<Person> queryByName(String name);
public List<Person> queryAllPerson();
public List<Person> queryPersons(Person person);
public List<Person> queryPage(Map<String, Object> info);
}
然后我们就一一实现吧。
Person类:
public class Person {
private int id;
private String name;
private int age;
//省去了getter setter
}
Person.xml
<?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="Person">
<!-- 实体类路径和名 这里得到person是大小写不敏感的 -->
<typeAlias alias="person" type="com.gbx.po.Person" /> <!-- SQL语句 --> <insert id="addPerson" parameterClass="person" >
<!-- 利用自增字段来填充主键 -->
<selectKey resultClass="int" keyProperty="id">
select LAST_INSERT_ID() as id
</selectKey>
insert into t_person(id, name, age)
values(#id#, #name#, #age#)
</insert> <update id="updatePerson" parameterClass="person">
update t_person
set
id=#id#,
name=#name#,
age=#age#
where
id=#id#
</update>
<delete id="deletePerson" parameterClass="int">
delete from t_person
where
id=#id#
</delete> <delete id="deleteAllPerson" parameterClass="List">
delete from t_person
where
id in
(<iterate conjunction=",">
#[]#
</iterate>)
</delete> <select id="queryPersonById" parameterClass="int" resultClass="person">
select id, name, age
from t_person
where
id=#id#
</select> <select id="queryPersonByName" parameterClass="String" resultClass="person">
select id, name, age
from t_person
where
name like '%$name$%'
</select>
<select id="queryAllPerson" resultClass="person" >
select id, name, age
from t_person
</select> <select id="queryPersons" resultClass="person" parameterClass="person" >
select id, name, age
from t_person
<dynamic prepend="where">
<isNotEqual prepend="and" property="id" compareValue="0">
id=#id#
</isNotEqual>
<isNotNull prepend="and" property="name">
name like '%$name$%'
</isNotNull>
<isGreaterEqual prepend="and" property="age" compareValue="0">
age>#age#
</isGreaterEqual>
</dynamic> </select> <select id="queryPage" parameterClass="java.util.Map" resultClass="person">
select id, name, age
from t_person
<dynamic prepend="where">
<isNotEqual prepend="and" property="id" compareValue="0">
id=#id#
</isNotEqual>
<isNotNull prepend="and" property="name">
name like '%$name$%'
</isNotNull>
<isNotEqual prepend="and" property="age" compareValue="0">
age>=#age#
</isNotEqual>
</dynamic>
limit #begin#, #pageSize#
</select> </sqlMap>
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig>
<!-- 引入资源 -->
<properties resource="SqlMap.properties"/>
<!-- 配置数据库连接信息 -->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</dataSource>
</transactionManager> <sqlMap resource="com/gbx/po/Person.xml"/> </sqlMapConfig>
PersonDaoImp
package com.gbx.dao; import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.gbx.po.Person;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class PersonDaoImp implements IPersonDao{ private static SqlMapClient client = null;
static{
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
client = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public boolean addPerson(Person person) {
System.out.println("添加前 " + person.getId());
try {
client.insert("addPerson", person);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("添加后: " + person.getId());
return true;
} public boolean updatePerson(Person person) {
try {
client.update("updatePerson", person);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("更新成功....");
return true;
} public boolean deletePersonById(int id) {
try {
client.delete("deletePerson", id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("删除成功....");
return true;
} public boolean deleteAll(List<Integer> ids) {
try {
client.delete("deleteAllPerson", ids);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("删除成功....");
return true;
} public Person queryById(int id) {
Person p = null;
try {
p = (Person) client.queryForObject("queryPersonById", id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return p;
} @SuppressWarnings("unchecked")
public List<Person> queryByName(String name) {
List<Person> persons = null;
try {
persons = client.queryForList("queryPersonByName", name);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
} @SuppressWarnings({ "unchecked", "deprecation" })
public List<Person> queryAllPerson() {
List<Person> persons = null;
try { persons = client.queryForList("queryAllPerson");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
} @SuppressWarnings("unchecked")
public List<Person> queryPersons(Person person) {
List<Person> persons = null;
try {
persons = client.queryForList("queryPersons", person);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
} @SuppressWarnings("unchecked")
public List<Person> queryPage(Map<String, Object> info) {
List<Person> persons = null;
try {
persons = client.queryForList("queryPage", info);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
} public static void main(String[] args) {
IPersonDao dao = new PersonDaoImp();
//添加
// Person person = new Person();
// person.setName("小明");
// person.setAge(1);
// dao.addPerson(person); //更新
// Person person = new Person();
// person.setId(18);
// person.setName("小明123");
// person.setAge(1);
// dao.updatePerson(person); //删除
// dao.deletePersonById(18);
//批量删除
// List<Integer> ids = new ArrayList<Integer>();
// ids.add(3); ids.add(4); ids.add(5);
// dao.deleteAll(ids);
// System.out.println(ids); //ID查询
// Person person = new Person();
// person = dao.queryById(19);
// System.out.println("查询到的个人信息为:" + person.getId() + " " + person.getAge() + " " + person.getName()); //姓名模糊查询
// List<Person> persons = dao.queryByName("小米");
// for (Person p : persons) {
// System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
// } //查询所有
// List<Person> persons = dao.queryAllPerson();
// for (Person p : persons) {
// System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
// } //多条件查询
// Person person = new Person();
// person.setId(0);
// person.setName("小");
// person.setAge(20);
// List<Person> persons = dao.queryPersons(person);
// for (Person p : persons) {
// System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
// } //利用Map实现模糊的分页查询
Map<String, Object> info = new HashMap<String, Object>();
info.put("begin", 0);
info.put("pageSize", 100);
info.put("id", 0);
info.put("name", "小");
info.put("age", 20); List<Person> persons = dao.queryPage(info);
for (Person p : persons) {
System.out.println("查询到的个人信息为:" + p.getId() + " " + p.getAge() + " " + p.getName());
}
}
}
iBatis的CRUD操作详细总结的更多相关文章
- 一步步学Mybatis-实现单表情况下的CRUD操作 (3)
今天这一章要紧接上一讲中的东西,本章中创建基于单表操作的CRUD与GetList操作,此示例中以Visitor表为范例,为了创建一点测试数据我们先弄个Add方法吧 继续在上次的IVisitorOper ...
- Springboot整合Mybatis实现级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
随机推荐
- [js]ext.js探索
Ext JS 经常会遇到布局等头疼的问题,一直在用bootstrap,但是我不喜欢这玩意出的效果想找个合适的js架构入手 http://examples.sencha.com/extjs/6.6.0/ ...
- 算法---数组总结篇2——找丢失的数,找最大最小,前k大,第k小的数
一.如何找出数组中丢失的数 题目描述:给定一个由n-1个整数组成的未排序的数组序列,其原始都是1到n中的不同的整数,请写出一个寻找数组序列中缺失整数的线性时间算法 方法1:累加求和 时间复杂度是O(N ...
- 摄影EV值深入研究
1. 什么是EV值 1.1. EV值定义 EV(Exposure Value),曝光值,是反应曝光量的一个值.当感光度为ISO 100.光圈值为F1.曝光时间为1秒时,定义曝光量为0.曝光量减少一档时 ...
- Look for the Air Jordan 32 in full family sizing
Following the release of the 'Rosso Corsa' colorway, Jordan Brand is now set to officially launch th ...
- C#方法参数传递-同时使用ref和out关键字
在方法参数传递中,可以同时使用ref和out关键字,但是要注意ref和out参数传递的不同. using System;class Program{static void Main(){ Pro ...
- office word 2010 怎么把左侧的标题大纲调出来?
有时候打开Word很希望出现左边的大纲,可是有时候就不出来,对word一些操作都忘得差不多了,这个小问题确实还是让我迷糊了一下~~ 网上的解决方案是: 打开Word2010文档窗口,切换到“视图”功能 ...
- MySQL重装失败,could not start the service MySQL.Error:0
MySQL5.5 安装失败现象: mysqld.exe [6132] 中发生了未经处理的 win32 异常 could not start the service MySQL.Error:0 1.在 ...
- Javassist
Javassist 实现动态代理 javassist 是一款非常优秀的Java 字节码引擎工具,能够在运行时编译.生成Java Class.
- ping和telnet的区别
内容主要转自: http://jingyan.baidu.com/article/8065f87fc3b31123312498e5.html http://zhidao.baidu.com/link? ...
- 响应式瀑布流插件Grid-A-Licious
Grid-A-Licious是一款遵守MIT协议的响应式瀑布流插件.该插件总代码行不超过400行,实现很巧妙,使用时也很流畅.实现原理也很简单,根据屏幕宽度和参数中设置的列宽度以及每项之间的间隔宽度, ...