iBatis 的简单入门

iBATIS一词来源于“internet”和“abatis”的组合,于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和·NET的持久层框架。

ibatis本是apache的一个开源项目,2010年这个项目由apache software foundation 迁移到了google code,并且改名为mybatis。

这里来对ibatis做一个简单的入门,

第一步,引包

ibatis.jar 和数据库驱动包,这里选用的是mysql

第二步:写配置文件

SqlMapConfig.xml (名字自己取,和hibernate一样,读取的时候读取自己取得文件名就OK了)

<?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>
        <!-- 引用JDBC属性的配置文件 -->
        <properties resource="cn/test/SqlMap.properties"></properties>
        
        
        <!-- 使用JDBC的事务管理 -->
        <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="cn/test/domain/Student.xml"/>
</sqlMapConfig>

然后创建一个参数文件

SqlMap.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=root
password=123456

这里数据库的链接就基本上完成了,

然后开始写一个实体类:Student.java

package cn.test.domain;

public class Student {

    private String Id;
    private String name;
    private int age;
    
    public Student() {
        // TODO Auto-generated constructor stub
    }
    public String getId() {
        return Id;
    }
    public void setId(String id) {
        Id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }


}

写一个实体类对应的映射文件:Student.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>
    <typeAlias alias="Student" type="cn.test.domain.Student"/>
 
    <!-- 这样以后改了sql,就不需要去改java代码了 -->
    <!-- id表示select里的sql语句,resultClass表示返回结果的类型 -->
    <select id="selectAllStudent" resultClass="Student">
    select * from
    student
    </select>
</sqlMap>

这个框架简单易懂,这里的select就是查询放方法, ID就是这个查询SQL所分配的地址, type是映射的 Student实体类

然后将映射文件加入到核心配置文件中SqlMapConfig.xml

 <sqlMap resource="cn/test/domain/Student.xml"/>

 

然后开始写一个测试的方法

package cn.test.service;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import cn.test.domain.Student;

public class StudentImpl implements IStudent {

    private static SqlMapClient sqlMapClient = null; 
    
    // 读取配置文件
    static {
        try {
            Reader reader = Resources.getResourceAsReader("cn/test/SqlMapConfig.xml");
            sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 
    
    
    public void addStudent(Student student) {
        // TODO Auto-generated method stub

    }

    public List<Student> selStudent() {
        // TODO Auto-generated method stub
        List<Student> student  = null;
        try {
         student = sqlMapClient.queryForList("selectAllStudent");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return student;

    }

}

 

写一个测试文件进行测试即可

package cn.test.main;

import java.util.List;

import cn.test.domain.Student;
import cn.test.service.IStudent;
import cn.test.service.StudentImpl;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    IStudent istudent = new StudentImpl();
    List<Student> student = istudent.selStudent();
        for(int i =0;i<student.size();i++){
            System.out.printf("id="+student.get(i).getId() + "name = " +student.get(i).getName() + "age = " + student.get(i).getAge());
        }
    }

}


能够看到数据库的内容被取出来的时候就表示测试此框架成功

 

posted on 2015-01-07 16:28  手撕高达的村长  阅读(185)  评论(0编辑  收藏  举报

导航