posts - 2, comments - 27, trackbacks - 0, articles - 60
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          初試MyBatis

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

          準(zhǔn)備好數(shù)據(jù)庫(kù),此處用MySQL做練習(xí),創(chuàng)建一個(gè)bbs數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)tb_users表,結(jié)構(gòu)如下
          +----------+----------+------+-----+---------+-------+
          | Field    | Type     | Null | Key | Default | Extra |
          +----------+----------+------+-----+---------+-------+
          | userid   | int(11)  | NO   | PRI |         |       |
          | username | char(20) | NO   |     |         |       |
          +----------+----------+------+-----+---------+-------+

          創(chuàng)建一個(gè)User類,與數(shù)據(jù)表對(duì)應(yīng)
          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;
              }
          }
          再創(chuàng)建一個(gè)UserMapper接口,里面提供了對(duì)User的相關(guān)操作
          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);
          }
          再創(chuàng)建一個(gè)UserMapper.xml,與UserMapper.java對(duì)應(yīng)的一個(gè)配置文件,經(jīng)本例測(cè)試,其中的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下面創(chuàng)建MyBatis配置文件mybatis-conf.xml,配置文件名沒(méi)有特殊規(guī)定,因?yàn)樵诤竺娴拇a里需要指定文件名
          <?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>
          創(chuàng)建一個(gè)獲取連接的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;
              }
          }
          做好上述準(zhǔn)備后,寫一個(gè)主方法調(diào)用測(cè)試,如下
          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();
                  }
              }
          }
          在數(shù)據(jù)庫(kù)中添加兩條記錄,并提交
          +--------+----------+
          | userid | username |
          +--------+----------+
          | 1      | user1    |
          | 2      | user2    |
          +--------+----------+
          接下來(lái)就可以運(yùn)行看看結(jié)果了。輸出如下:
          Hello
          user2
          終于跑起來(lái)了,在處理了一系列的Exception之后看到的結(jié)果,上面的測(cè)試只是做了一個(gè)讀取數(shù)據(jù)的操作,如果有新增或修改數(shù)據(jù),需要調(diào)用session.commit()操作。
          大概小結(jié)一下,用了MyBatis感覺(jué)還是很不錯(cuò)的,把SQL語(yǔ)句和JAVA代碼分離開(kāi),喜歡自己掌控SQL語(yǔ)句的人們可能會(huì)喜歡MyBatis一些,不像Hibernate那樣可以完全不用寫SQL語(yǔ)句。只是配置文件和接口寫起來(lái)還是有些麻煩,還有POJO類的生成,工作量還是不小哇,網(wǎng)上找到一個(gè)生成工具,下次研究一下再補(bǔ)充上來(lái)。
          主站蜘蛛池模板: 连江县| 镇安县| 绿春县| 龙口市| 明光市| 民乐县| 苍梧县| 宁安市| 红河县| 丹江口市| 驻马店市| 东阿县| 仲巴县| 原平市| 株洲县| 苍山县| 大同县| 临夏县| 诏安县| 连城县| 乌兰浩特市| 津市市| 大渡口区| 来凤县| 闸北区| 拜泉县| 襄垣县| 宜宾市| 巨野县| 丰顺县| 勃利县| 山东省| 乌拉特前旗| 德江县| 凤翔县| 于都县| 恩施市| 南川市| 武汉市| 邹平县| 广昌县|