• 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());
            }
        }
    
    }


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

  • 相关阅读:
    GetTickCount 和getTickCount
    载入其他同名源文件导致vs编译错误
    opencv的配置
    VS05错误:部署WEB文件失败
    c++移动文件夹
    opencv2.4.0版本不支持Mat的大小自动调整?
    关于c++中public & private方法调用问题
    c++读取文件夹及子文件夹数据
    深入理解java虚拟机-第四章
    深入理解java虚拟机-第三章
  • 原文地址:https://www.cnblogs.com/sunxun/p/4208761.html
走看看 - 开发者的网上家园