首页 > 代码库 > iBatis 的简单入门

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.Driverurl=jdbc:mysql://127.0.0.1:3306/testusername=rootpassword=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());        }    }}


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

 

iBatis 的简单入门