一:首先展示一下我的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入门实例(完整)的更多相关文章

  1. mybatis 详解(二)------入门实例(基于XML)

    通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...

  2. mybatis 详解(三)------入门实例(基于注解)

    1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...

  3. SoapUI简介和入门实例解析

    SoapUI简介 SoapUI是一个开源测试工具,通过soap/http来检查.调用.实现Web Service的功能/负载/符合性测试.该工具既可作为一个单独的测试软件使用,也可利用插件集成到Ecl ...

  4. 【React】入门实例

    React 可以灵活的应用在各种各样的项目中.你可以用它来创建新的应用程序,你也可以逐步引用而不改变现有的代码库. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaS ...

  5. React 入门实例

    React 入门实例教程 一.安装 React 的安装包,可以到官网下载. $ git clone git@github.com:ruanyf/react-demos.git 如果你没安装 git, ...

  6. Spring入门1. IoC入门实例

    Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...

  7. Lucene建立索引搜索入门实例

                                第一部分:Lucene建立索引 Lucene建立索引主要有以下两步:第一步:建立索引器第二步:添加索引文件准备在f盘建立lucene文件夹,然后 ...

  8. 1. mybatis 的入门实例

    mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...

  9. Vue项目入门实例

    前言 本文记录Vue2.x + Element-UI + TypeScript语法入门实例 为什么要用TypeScript? 1.TypeScript是JavaScript的超集,利用es6语法,实现 ...

随机推荐

  1. MySQL在渗透测试中的应用

    原文地址:https://xz.aliyun.com/t/400 前言作为一个安全爱好者你不可能不知道MySQL数据库,在渗透过程中,我们也很经常遇到MySQL数据库的环境,本文就带大家了解MySQL ...

  2. 你还在用BeanUtils进行对象属性拷贝?

    在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的:但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代 ...

  3. 【暂时停更】Gungame更新下载平台

    v1.0: 这是本游戏的第一个版本, 制作于2019.4.12. 控制 : Player1: wsad为移动, r键开炮(有朝向限制) Player2: ikjl为移动, p键开炮(有朝向限制) 下载 ...

  4. 爬虫之selenium爬取京东商品信息

    import json import time from selenium import webdriver """ 发送请求 1.1生成driver对象 2.1窗口最大 ...

  5. Oracle“ORA-00979:不是GROUP BY 表达式”解决方式

    今天在工作中碰到一个问题,用group by 语句进行分组时出现ORA-00979错误. 代码如下: select R.ORDER_NO, R.PRODUCT_CODE, R.REGION_NO, R ...

  6. Python - selenium自动化-Chrome(headless)

    什么是 Headless Chrome Headless Chrome 是 Chrome 浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有 Chrome 支持的特性运行你的程序.相比于现代浏览 ...

  7. php sublime常用插件

    php sublime常用插件 1 Sublime Text的默认设置是不开启显示编码的,如果想开启,可通过菜单Perference → Settings – User,在打开的配置文件里 ,在大括号 ...

  8. jquery 路径动画贝塞尔动画

    jquery 路径动画贝塞尔动画 <pre><!DOCTYPE html><!DOCTYPE html><html> <head> < ...

  9. 【自然语言处理】利用LDA对希拉里邮件进行主题分析

    首先是读取数据集,并将csv中ExtractedBodyText为空的给去除掉 import pandas as pd import re import os dir_path=os.path.dir ...

  10. Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通,解决name or service not known

     NAT网络通用配置 测试连接 主机到虚拟机 虚拟机到虚拟机 ,虚拟机到外网 CentOS,提示name or service not known 设置DNS服务器 vi /etc/resolv.co ...