iBatis

iBatis是数据持久层的框架。和ORM框架(如Hibernate)将数据库表直接映射为Java对象相比,iBatis是将SQL语句映射为Java对象。iBatis允许你对SQL有完全控制权,可以视为半自动的数据访问工具。 iBatis的最大优点是简便,轻量级,仅需iBatis的一个jar和数据库的驱动即可运行,而且使用iBatis仅需掌握SQL和XML的用法即可。


  1. insert

  2. delete

  3. update

  4. queryForObject

  5. queryForList

  6. queryForMap


1. 数据库

CREATE TABLE STUDENT (
ID NUMBER(5),
NAME VARCHAR2(10),
SEX VARCHAR2(10),
AGE NUMBER(10),
ADDRESS VARCHAR2(10),
CONSTRAINT PK_ID PRIMARY KEY(ID)
);


2. 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>  
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=ynsb1  
password=1 


3. sqlMap_student.xml

<?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="updataStudent_test"   
        parameterClass="com.shangcg.ibatis.StudentDto">  
        update student set   
        name=#name#,sex=#sex#,age=#age#,address=#address#   
        where id = #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>  


4. StudentDTO

import java.sql.Date;
public class StudentDto {
    //注意这里需要保证有一个无参构造方法,因为映射使用反射,如果没有无参构造可能会出现问题
    private int id;    
    private String name;  
    private String sex;  
    private int age;  
    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;
    }  
    
}


5. 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表的指定ID数据   
    public void delStudentByID(SqlMapClient sqlMap,StudentDto studentdto);  
    //更新student表的数据   
    public void updataStudent(SqlMapClient sqlMap,StudentDto studentdto);  
    //查询student表的指定ID数据   
    public StudentDto selectStudentByID(SqlMapClient sqlMap,StudentDto studentdto); 
}


6. 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表的指定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表的指定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;  
    }  
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值