ibatis入门实例(完整)
一:首先展示一下我的web文件结构,首先导入Ibatis所需jar和数据库驱动,从第二步开始跟着笔者一步步来

二:数据库建测试表
CREATE TABLE STUDENT (
ID NUMBER(5),
NAME VARCHAR2(10),
SEX VARCHAR2(10),
AGE NUMBER(10),
ADDRESS VARCHAR2(10),
CONSTRAINT PK_ID PRIMARY KEY(ID)
);
三:创建SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig> <properties resource="SqlMapConfig.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="sqlMap_student.xml" /> </sqlMapConfig>
四:创建SqlMapConfig.properties,将用户名和密码改成自己的
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=ynsb1
password=1
五 创建sqlMap_student.xml映射文件,注意parameterClass要改成自己的pojo类
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="Test"> <statement id="insert_student"
parameterClass="com.shangcg.ibatis.StudentDto">
insert into student(
id,name,age,sex,address) values(
#id#,#name#,#age#,#sex#,#address# )
</statement> <statement id="delete_all_student"
parameterClass="com.shangcg.ibatis.StudentDto">
delete from student
</statement> <statement id="deleteByID_student"
parameterClass="com.shangcg.ibatis.StudentDto">
delete from student where
id = #id#
</statement> <statement id="updataStudent_test"
parameterClass="com.shangcg.ibatis.StudentDto">
update student set
name=#name#,sex=#sex#,age=#age#,address=#address#
where id = #id#
</statement> <statement id="select_all_student"
resultClass="com.shangcg.ibatis.StudentDto">
select * from student order by id
</statement> <statement id="selectByID_student"
parameterClass="com.shangcg.ibatis.StudentDto"
resultClass="com.shangcg.ibatis.StudentDto">
select * from student
where id = #id#
order by id
</statement>
</sqlMap>
六:配置文件创建完成,接下来创建java类
1)创建StudentDto
import java.sql.Date;
public class StudentDto {
// 注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,如果没有无参构造可能会出现问题
//学生ID
private int id = 0;
//学生姓名
private String name = "";
//学生性别
private String sex = "";
//学生年龄
private int age = 0;
//学生地址
private String address = "";
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2)创建接口StudentDao
import java.util.ArrayList; import com.ibatis.sqlmap.client.SqlMapClient;
import com.shangcg.ibatis.StudentDto; public interface StudentDao { //添加student表的数据
public void addStudent(SqlMapClient sqlMap,StudentDto studentdto);
//删除student表的数据
public void delStudent(SqlMapClient sqlMap);
//删除student表的指定ID数据
public void delStudentByID(SqlMapClient sqlMap,StudentDto studentdto);
//更新student表的数据
public void updataStudent(SqlMapClient sqlMap,StudentDto studentdto);
//查询student表的所有数据
public ArrayList selectStudent(SqlMapClient sqlMap);
//查询student表的指定ID数据
public StudentDto selectStudentByID(SqlMapClient sqlMap,StudentDto studentdto);
}
3)创建实现类StudentImpl
import java.sql.SQLException;
import java.util.ArrayList; import com.ibatis.sqlmap.client.SqlMapClient;
import com.shangcg.ibatis.StudentDto;
import com.shangcg.interfaces.StudentDao; public class StudentImpl implements StudentDao { //添加student表的数据
public void addStudent(SqlMapClient sqlMap, StudentDto studentdto) { try {
sqlMap.insert("insert_student", studentdto);
} catch (SQLException e) { e.printStackTrace();
}
} //删除student表的数据
public void delStudent(SqlMapClient sqlMap) { try {
sqlMap.delete("delete_all_student", null);
} catch (SQLException e) { e.printStackTrace();
}
} //删除student表的指定ID数据
public void delStudentByID(SqlMapClient sqlMap, StudentDto studentdto) { try {
sqlMap.delete("deleteByID_student",studentdto );
} catch (SQLException e) { e.printStackTrace();
}
} //更新student表的数据
public void updataStudent(SqlMapClient sqlMap, StudentDto studentdto) { try {
sqlMap.update("updataStudent_test",studentdto );
} catch (SQLException e) { e.printStackTrace();
}
} //查询student表的所有数据
public ArrayList selectStudent(SqlMapClient sqlMap) { //保存查询结果
ArrayList rsList = new ArrayList(); try {
rsList = (ArrayList)sqlMap.queryForList("select_all_student","");
} catch (SQLException e) { e.printStackTrace();
}
return rsList;
} //查询student表的指定ID数据
public StudentDto selectStudentByID(SqlMapClient sqlMap, StudentDto studentdto) { //返回后保存在info中
StudentDto info = new StudentDto();
try {
info = (StudentDto)sqlMap.queryForObject("selectByID_student", studentdto);
} catch (SQLException e) { e.printStackTrace();
}
return info;
} }
4)创建MainTest 测试类
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList; import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.shangcg.ibatis.StudentDto;
import com.shangcg.impl.StudentImpl; public class MainTest { public StudentImpl impl = new StudentImpl();
public StudentDto info = new StudentDto();
public static SqlMapClient sqlmapclient = null;
static {
try {
//读取xml文件
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlmapclient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) { e.printStackTrace();
}
} public static void main(String []args){
MainTest stu = new MainTest(); System.out.println("------------------------------- start ------------------------------"); //以下为各种方法测试 //添加student表的数据
stu.addStudent_test(); //删除student表的数据
//stu.delStudent_test(); //删除student表的指定ID数据
//stu.delStudentByID_test(); //更新student表的数据
//stu.updataStudent_test(); //查询student表的所有数据
//stu.selectStudent_test(); //查询student表的所有数据
//stu.selectStudentByID_test(); System.out.println("------------------------------- end ------------------------------"); } //添加student表的数据
public void addStudent_test(){ //把要插入的数据填入info对象中
info.setId(5);
info.setName("zh2208");
info.setSex("男");
info.setAge(24);
info.setAddress("上海"); impl.addStudent(sqlmapclient, info); //参数就是sqlMap_student.xml中配置对应的id
} //删除student表的数据
public void delStudent_test(){
impl.delStudent(sqlmapclient);
} //删除student表的指定ID数据
public void delStudentByID_test(){
//指定ID
info.setId(1);
impl.delStudentByID(sqlmapclient,info); } //更新student表的数据
public void updataStudent_test(){ //把要更新的数据填入info对象中
info.setId(6);
info.setName("zh2208up");
info.setSex("男");
info.setAge(20);
info.setAddress("上海up");
impl.updataStudent(sqlmapclient, info);
} //查询student表的所有数据
public void selectStudent_test(){ StudentDto stu_dto = new StudentDto();
//检索结果保存到list中
ArrayList resultList = impl.selectStudent(sqlmapclient);
for(int i = 0; i < resultList.size();i++){
stu_dto = (StudentDto) resultList.get(i);
//打印对象中的信息
show(stu_dto);
} } //查询student表的指定ID数据
public void selectStudentByID_test(){
StudentDto stu_dto = new StudentDto();
info.setId(1);
stu_dto = impl.selectStudentByID(sqlmapclient,info); if(stu_dto != null){
show(stu_dto);
}else{
System.out.println("no data!!!!");
}
} //打印查询结果
public void show(StudentDto stu_dto){ System.out.print("学生ID :" + stu_dto.getId() + " ; ");
System.out.print("学生姓名 :" + stu_dto.getName() + " ; ");
System.out.print("学生性别 :" + stu_dto.getSex() + " ; ");
System.out.print("学生年龄 :" + stu_dto.getAge() + " ; ");
System.out.print("学生地址 :" + stu_dto.getAddress());
System.out.println(); }
}
ibatis入门实例(完整)的更多相关文章
- mybatis 详解(二)------入门实例(基于XML)
通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...
- mybatis 详解(三)------入门实例(基于注解)
1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...
- SoapUI简介和入门实例解析
SoapUI简介 SoapUI是一个开源测试工具,通过soap/http来检查.调用.实现Web Service的功能/负载/符合性测试.该工具既可作为一个单独的测试软件使用,也可利用插件集成到Ecl ...
- 【React】入门实例
React 可以灵活的应用在各种各样的项目中.你可以用它来创建新的应用程序,你也可以逐步引用而不改变现有的代码库. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaS ...
- React 入门实例
React 入门实例教程 一.安装 React 的安装包,可以到官网下载. $ git clone git@github.com:ruanyf/react-demos.git 如果你没安装 git, ...
- Spring入门1. IoC入门实例
Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...
- Lucene建立索引搜索入门实例
第一部分:Lucene建立索引 Lucene建立索引主要有以下两步:第一步:建立索引器第二步:添加索引文件准备在f盘建立lucene文件夹,然后 ...
- 1. mybatis 的入门实例
mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...
- Vue项目入门实例
前言 本文记录Vue2.x + Element-UI + TypeScript语法入门实例 为什么要用TypeScript? 1.TypeScript是JavaScript的超集,利用es6语法,实现 ...
随机推荐
- MySQL数据库的安装与配置(windows)
MySQL是目前最为流行的开放源码的数据库,是完全网络化的跨平台的关系型数据库系统,它是由瑞典MySQLAB公司开发,目前属于Oracle公司.任何人都能从Internet下载MySQL软件,而无需支 ...
- 不用循环控制、条件控制、三目运算符 实现阶乘n!
long func(int n) { ( n <= 1 && (n=1) ) || ( n*=func(n-1)); return n; } template<int N& ...
- [2018-03-08] virtualenv
virtualenv 的有点 1.使不同应用开发环境独立 2.环境升级不影响其他应用,也不会影响全局的python环境 3.它可以防止系统中出现包管理混乱和版本的冲突 新建 virtualenv ...
- [考试反思]1013csp-s模拟测试72:距离
最近总是这个样子. 看上去排名好像还可以,但是实际上离上面的分差往往能到80分,但是身后的分差其实只有10/20分. 比上不足,比下也不怎么的. 所以虽然看起来没有出rank10,但是在总分排行榜上却 ...
- [考试反思]0809NOIP模拟测试15:解剖
说在前面: 不建议阅读.这里没有考试经验,只有一大堆负面情绪. 看了你不会有什么收获.看完了就不要怪我影响了你的心情. 以后不粘排行榜了.没什么意思没什么用. 但是我的意思并不是因为这次没考好的一时兴 ...
- 常用的webpack优化方法
1. 前言 关于webpack,相信现在的前端开发人员一定不会陌生,因为它已经成为前端开发人员必不可少的一项技能,它的官方介绍如下: webpack 是一个模块打包器.webpack的主要目标是将 J ...
- 考试T3麻将
这题就是一个简单的暴力,但考试的时候不知道脑子在想什么,什么都没打出来,也许是我想的太多了... 这道题对于不会打麻将的人来说还是有点难理解规则的,我没说过我会打麻将,这里是题目链接. 20分思路,利 ...
- wordpress插件:multiple post thumbnails(可为文章添加多个特色图片)
我们经常会给wordpress的文章加上特色图片来实现日志缩略图的需求,但是很多时候一张图片并不能够完美而又全面的表达我们wordpress文章的内容,这时候您可能就会需要这样一个能让wordpres ...
- Scrapy进阶知识点总结(四)——Item Pipeline
Item Pipeline Item Pipeline调用发生在Spider产生Item之后.当Spider解析完Response之后,Item就会传递到Item Pipeline,被定义的Item ...
- php PDO getlastsql写法
php PDO getlastsql写法有些时候 运行失败需要查看 sql语句 原型有没有语法错误 这个时候就用 下面的函数就是把问号替换成 值 就可以看到原型了<pre>function ...