Mybatis的搭建與使用

jopen 10年前發布 | 20K 次閱讀 MyBatis3 持久層框架 MyBatis

Hibernate是非常完美的一個持久性框架,但是由于其考慮到各種功能和通用性,導致這個框架太大了,另外就是封裝的太好了導致自主性比較小。所以Mybatis受到很多公司的歡迎。Mybatis以前叫做ibatis,用法稍微有點區別,在這里我用的是Mybatis 3

1.去官網下載Mybatis的Jar包 http://mybatis.github.io/

2.配置SqlMapConfig.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE configuration  
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">  
    <configuration>  
        <!-- 給bean取別名用在mapping文件中 -->  
        <typeAliases>  
            <typeAlias type="com.lubby.bean.Worker" alias="Worker" />  
        </typeAliases>  
        <environments default="development">  
            <environment id="development">  
                <!-- 使用JDBC的事務管理 -->  
                <transactionManager type="JDBC" />  
                <!-- 數據源 -->  
                <dataSource type="POOLED">  
                    <property name="driver" value="org.postgresql.Driver" />  
                    <property name="url" value="jdbc:postgresql://127.0.0.1:5432/lubby" />  
                    <property name="username" value="admin" />  
                    <property name="password" value="admin" />  
                </dataSource>  
            </environment>  
        </environments>  
        <!-- 這里可以寫多個實體的映射文件 -->  
        <mappers>  
            <mapper resource="com/lubby/bean/WorkerSqlMap.xml" />  
        </mappers>  
    </configuration>  

3.worker bean
    package com.lubby.bean;  
    public class Worker {  
        private String id;  
        private String name;  
        int age;  
        public Worker() {  
            super();  
        }  
        public Worker(String id, String name, int age) {  
            super();  
            this.id = id;  
            this.name = name;  
            this.age = age;  
        }  
        public String getId() {  
            return id;  
        }  
        public void setId(String id) {  
            this.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;  
        }  
        @Override  
        public String toString() {  
            return "Worker [id=" + id + ", name=" + name + ", age=" + age + "]";  
        }  
    }  

3.bean的mapping配置文件  WorkerSqlMap.xml
    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE mapper  
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  

    <!-- namespace用于java代碼調用時識別指定xml的mapper文件 -->  
    <mapper namespace="com.lubby.bean">  
        <sql id="field">  
            id,name,age  
        </sql>  
        <select id="getAllWorker" resultType="Worker">  
            select  
            <include refid="field" />  
            from worker  
        </select>  
        <select id="getWorkerById" resultType="Worker">  
            select  
            <include refid="field" />  
            from worker where  
            id= #{id}  
        </select>  
        <select id="getWorkerByName" resultType="Worker">  
            select  
            <include refid="field" />  
            from worker where name like '%'||#{name}||'%'  
        </select>  

        <insert id="addWorker">  
            insert into worker (  
            <include refid="field" />  
            ) values(#{id},#{name},#{age})  
        </insert>  

        <update id="updateWorker">  
            update worker set name=#{name} ,age=#{age} where  
            id=#{id}  
        </update>  

        <delete id="deleteWorkerById">  
        delete from worker where id=#{id};  
        </delete>  
    </mapper>  
4.在主函數中使用mybatis
package com.lubby.test;  

import java.io.IOException;  
import java.io.Reader;  
import java.util.List;  

import org.apache.ibatis.io.Resources;  
import org.apache.ibatis.session.SqlSession;  
import org.apache.ibatis.session.SqlSessionFactory;  
import org.apache.ibatis.session.SqlSessionFactoryBuilder;  

import com.lubby.bean.Worker;  

public class Test {  
    public static void main(String[] args) {  
        SqlSessionFactory factory = null;  
        try {  
            Reader reader = Resources.getResourceAsReader("com/lubby/config/SqlMapConfig.xml");  
            factory = new SqlSessionFactoryBuilder().build(reader);  

        } catch (IOException e) {  
            e.printStackTrace();  
        }  

        SqlSession session = factory.openSession();  

        Worker worker = new Worker("003", "Join", 100);  
        //session.insert("com.lubby.bean.addWorker", worker);  
        //session.delete("com.lubby.bean.deleteWorkerById", "005");  
        //session.commit();  
        List<Worker> list = session.selectList("com.lubby.bean.getAllWorker");  
        System.out.println(session.selectOne("com.lubby.bean.getWorkerById", "001"));  
        System.out.println(session.update("com.lubby.bean.updateWorker", worker));  
        System.out.println(session.delete("com.lubby.bean.deleteWorkerById", "004"));  
        session.commit();  
        System.out.println(session.selectList("com.lubby.bean.getWorkerByName", "J"));  
        System.out.println(list);  
    }  

}  
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!