<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 2, comments - 27, trackbacks - 0, articles - 60
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    初試MyBatis

    Posted on 2012-07-22 12:48 ZhouFeng 閱讀(425) 評論(0)  編輯  收藏 所屬分類: 原創Web開發DataBase
    雖然MyBatis發布已經有一段時間了,一直想試試,可總是被中斷,這次總算是跑了一下,對MyBatis有所了解。
    在www.mybatis.org上可以找到下載鏈接,我下載的是mybatis-3.1.1這個版本,下載一個zip包,里面包含有主要的庫文件mybatis-3.1.1.jar,還有一些引用的jar,一個PDF說明文檔,這個說明文檔提供的是E文版,可以在網上找到相應的中文版,下載完成后,就開始我的操作了。
    在MyEclipse里創建了一個java工程,本來是打算在Web中使用的,沒有創建Web工程,只是想試一下MyBatis這東東,java工程就可以了。
    創建時引入MyBatis庫和數據庫驅動庫,創建一個空的工程

    準備好數據庫,此處用MySQL做練習,創建一個bbs數據庫,創建一個tb_users表,結構如下
    +----------+----------+------+-----+---------+-------+
    | Field    | Type     | Null | Key | Default | Extra |
    +----------+----------+------+-----+---------+-------+
    | userid   | int(11)  | NO   | PRI |         |       |
    | username | char(20) | NO   |     |         |       |
    +----------+----------+------+-----+---------+-------+

    創建一個User類,與數據表對應
    package com.cuit.prj.domain;

    public class User {
        
    private int userid;
        
    private String userName;
        
        
    public User() {
            
    super();
        }
        
    public User(int userid, String userName) {
            
    super();
            
    this.userid = userid;
            
    this.userName = userName;
        }
        
    public int getUserid() {
            
    return userid;
        }
        
    public void setUserid(int userid) {
            
    this.userid = userid;
        }
        
    public String getUserName() {
            
    return userName;
        }
        
    public void setUserName(String userName) {
            
    this.userName = userName;
        }
    }
    再創建一個UserMapper接口,里面提供了對User的相關操作
    package com.cuit.prj.presistence;

    import com.cuit.prj.domain.User;

    public interface UserMapper {
        User selectUser(
    int userid);
        
    void insertUser(User user);
        
    void updateUser(User user);
        
    void deleteUser(int userid);
    }
    再創建一個UserMapper.xml,與UserMapper.java對應的一個配置文件,經本例測試,其中的id要和接口中的方法名一致
    <?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"
    >
    <mapper namespace="com.cuit.prj.presistence.UserMapper">
        
    <select id="selectUser" parameterType="int" resultType="com.cuit.prj.domain.User">
            select *
            from tb_users where userid = #{userid}
        
    </select>

        
    <insert id="insertUser" parameterType="com.cuit.prj.domain.User">
            insert into tb_users(userid,username) values (#{userid},#{userName})
        
    </insert>

        
    <update id="updateUser" parameterType="com.cuit.prj.domain.User">
            update tb_users set username = #{userName} where userid = #{userid}
        
    </update>

        
    <delete id="deleteUser" parameterType="int">
            delete from tb_users where userid = #{userid}
        
    </delete>
    </mapper>
    在src下面創建MyBatis配置文件mybatis-conf.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>
        
    <environments default="development">
            
    <environment id="development">
                
    <transactionManager type="JDBC" />
                
    <dataSource type="POOLED">
                    
    <property name="driver" value="com.mysql.jdbc.Driver" />
                    
    <property name="url" value="jdbc:mysql://localhost/bbs" />
                    
    <property name="username" value="root" />
                    
    <property name="password" value="1233" />
                
    </dataSource>
            
    </environment>
        
    </environments>
        
    <mappers>
            
    <mapper resource="com/cuit/prj/presistence/UserMapper.xml" />
        
    </mappers>
    </configuration>
    創建一個獲取連接的SessionFactory的類
    package com.cuit.prj.sessionfactory;

    import java.io.IOException;
    import java.io.Reader;

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

    public class SessionFactory {
        
    public static SqlSession getSession(){
            SqlSession session 
    = null;
            String resource 
    = "mybatis-conf.xml";
            
    try {
                Reader reader 
    = Resources.getResourceAsReader(resource);
                SqlSessionFactory sqlMapper 
    = new SqlSessionFactoryBuilder().build(reader);
                session 
    = sqlMapper.openSession();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
            
    return session;
        }
    }
    做好上述準備后,寫一個主方法調用測試,如下
    package com.cuit.prj;

    import org.apache.ibatis.session.SqlSession;
    import com.cuit.prj.domain.User;
    import com.cuit.prj.presistence.UserMapper;
    import com.cuit.prj.sessionfactory.SessionFactory;

    public class AppTest {
        public static void main(String[] args) {
            System.out.println(
    "Hello");
            SqlSession session 
    = SessionFactory.getSession();
            
    try {
                UserMapper mapper 
    = session.getMapper(UserMapper.class);

                User user 
    = mapper.selectUser(2);
                System.out.println(user.getUserName());
            } 
    finally {
                session.close();
            }
        }
    }
    在數據庫中添加兩條記錄,并提交
    +--------+----------+
    | userid | username |
    +--------+----------+
    | 1      | user1    |
    | 2      | user2    |
    +--------+----------+
    接下來就可以運行看看結果了。輸出如下:
    Hello
    user2
    終于跑起來了,在處理了一系列的Exception之后看到的結果,上面的測試只是做了一個讀取數據的操作,如果有新增或修改數據,需要調用session.commit()操作。
    大概小結一下,用了MyBatis感覺還是很不錯的,把SQL語句和JAVA代碼分離開,喜歡自己掌控SQL語句的人們可能會喜歡MyBatis一些,不像Hibernate那樣可以完全不用寫SQL語句。只是配置文件和接口寫起來還是有些麻煩,還有POJO類的生成,工作量還是不小哇,網上找到一個生成工具,下次研究一下再補充上來。
    主站蜘蛛池模板: 亚洲AV无码国产精品永久一区| 亚洲毛片在线观看| 亚洲国产欧美一区二区三区| 国产在线观看麻豆91精品免费 | 四虎永久免费观看| 亚洲熟妇无码八V在线播放| 在线成人a毛片免费播放| 一本色道久久88亚洲精品综合| 99久久综合国产精品免费| 日本亚洲色大成网站www久久| 久久WWW免费人成人片| 亚洲日本成本人观看| 国产青草视频免费观看97| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 免费观看91视频| 亚洲性天天干天天摸| 四虎最新永久免费视频| 亚洲AV无码一区二区三区人 | 亚洲男人天堂2017| 91麻豆最新在线人成免费观看| 国产成人精品亚洲日本在线| 黄网址在线永久免费观看| 日本高清不卡中文字幕免费| 亚洲精品中文字幕乱码三区 | 亚洲AV无码专区在线厂| 亚洲国产一成久久精品国产成人综合 | 99在线精品免费视频九九视| 亚洲人成电影网站色www| 亚洲福利视频一区二区| 嫩草在线视频www免费看| 亚洲二区在线视频| 在线看片无码永久免费aⅴ| 一边摸一边桶一边脱免费视频| 亚洲AV无码乱码在线观看裸奔| 亚洲免费在线观看视频| 美女扒开屁股让男人桶爽免费 | 亚洲制服丝袜中文字幕| 四虎影院永久免费观看| 四虎影视无码永久免费| 亚洲成年网站在线观看| 黑人精品videos亚洲人|