Mybatis3.2.6+mysql第一個例子

每當我們接觸到一個新的框架時,很多人會選擇把所有的文檔讀完,把別人的視頻看完(以前我也一樣),但是當你把所有的東西(文檔、視頻)都看完後來做第一個例子,發現你根本就無從下手,效率非常低下。我現在的做法是先到官網看搭建框架的五分鐘教程,把框架先搭起來,運行第一個例子,希望看到這邊的文章的童鞋們也採用這套做法,不要再繼續做無用功了。

Mybatis3.2.6下載:http://code.google.com/p/mybatis/downloads/list?can=3&q=Product%3DMyBatis

官方中文文檔:http://mybatis.github.io/mybatis-3/zh/index.html

下面我們來運行第一個mybatis3.2.3例子:

1、jdk、tomcat(或者其他web容器),必需的。

2、創建一個web項目

3、解壓mybatis3.2.6.zip文件,把mybatis-3.2.6.jar和lib目錄下的所有jar包複製到WEB-INF/lib

4、複製mysql-connector-java-5.1.14.jar到WEB-INF/lib

5、在mysql創建一個mybatis數據庫,新建一個user表,裏面有id,name,password。

6、新建一個實體User

package com.luoshengsha.bean;
public class User {
   /**id**/
   private String id;
   /**用戶名**/
   private String name;
   /**密碼**/
   private String password;

  //set和get方法--注意:不能少
}

7、創建一個userMapper

package com.luoshengsha.mapper;
import com.luoshengsha.bean.User;
public interface UserMapper {
   /**保存**/
   public void save(User user);
   /**修改**/
   public void update(User user);
   /**查找**/
   public User find(String id);
   /**刪除**/
   public void delete(String id);
}

8、創建一個userMapper.xml(名字和userMapper類對應,且放到同一目錄下)

<?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.luoshengsha.mapper.UserMapper"><!--注意:此處的命名空間是UserMapper的全限定類名-->

   <!-- 保存 -->
   <insert id="save" parameterType="user">
      insert into user(id,name,password) values(#{id},#{name},#{password})
   </insert>

   <!-- 更新 -->
   <update id="update" parameterType="user">
      update user set name=#{name},password=#{password} where id=#{id}
   </update>

   <!-- 查找 -->
   <select id="find" parameterType="string" resultType="user">
      select * from user where id=#{id}
   </select>

   <!-- 刪除 -->
   <delete id="delete" parameterType="string">
      delete from user where id=#{id}
   </delete>
</mapper>

9、在classpath下創建mybatis-confi.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>
   <settings>
   <!-- 全局啓用或禁用延遲加載。當禁用時,所有關聯對象都會即時加載。默認:true -->
   <setting name="lazyLoadingEnabled" value="true"/>

   <!-- 當啓用時,有延遲加載屬性的對象在被調用時將會完全加載任意屬性。否則,每種屬性將會按需要加載 -->
   <setting name="aggressiveLazyLoading" value="false"/>
 </settings>

 <typeAliases>
     <typeAlias type="com.luoshengsha.bean.User" alias="user"/><!--設置別名-->
 </typeAliases>

 <environments default="development">
     <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
           <property name="driver" value="org.gjt.mm.mysql.Driver"/>
           <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8"/><!--url中的&要用&amp;代替,否則會出錯-->
           <property name="username" value="root"/>
           <property name="password" value="root"/>
       </dataSource>
     </environment>
 </environments>

<mappers>
    <mapper resource="com/luoshengsha/mapper/UserMapper.xml"/><!--mapper對應的xml配置文件-->
</mappers>
</configuration>

10、在classpath下創建log4j.properties,用於日誌輸出

log4j.rootLogger=debug, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.org.apache=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

11、創建MybatisUtil類,用於獲取SqlSessionFactory

package com.luoshengsha.utils;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtil {
   private static SqlSessionFactory sqlMapper;
   private static Reader reader;

   static {
      try {
          reader = Resources.getResourceAsReader("mybatis-config.xml");
          sqlMapper = new SqlSessionFactoryBuilder().build(reader);
      } catch (Exception e) {
          e.printStackTrace();
      }
   }

   public static SqlSessionFactory getInstance() {
      return sqlMapper;
   }
}

12、單元測試類

package com.luoshengsha.test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.luoshengsha.bean.User;
import com.luoshengsha.mapper.UserMapper;
import com.luoshengsha.utils.MybatisUtil;
public class MybatisTest {
    private SqlSessionFactory sessionFactory= MybatisUtil.getInstance();

    @Test
    public void save() {
       SqlSession session = sessionFactory.openSession();
       try {
           UserMapper userMapper = session.getMapper(UserMapper.class);

           User user = new User();
           user.setId("1");
           user.setName("張三");
           user.setPassword("123456");

           userMapper.save(user);
           session.commit();//提交事務
      } catch (Exception e) {
          e.printStackTrace();
      } finally {
          session.close();
      }
  }

  @Test
  public void update() {
       SqlSession session = sessionFactory.openSession();
       try {
           UserMapper userMapper = session.getMapper(UserMapper.class);

           User user = userMapper.find("1");
           user.setName("李四");

           userMapper.update(user);
           session.commit();//提交事務
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           session.close();
       }
  }

 @Test
 public void find() {
       SqlSession session = sessionFactory.openSession();
       try {
           UserMapper userMapper = session.getMapper(UserMapper.class);

           User user = userMapper.find("1");

           System.out.println("id : " + user.getId() + ", name : " + user.getName() + ", password : " + user.getPassword());
       } catch (Exception e) {
          e.printStackTrace();
       } finally {
         session.close();
       }
 }

 @Test
 public void delete() {
       SqlSession session = sessionFactory.openSession();
       try {
           UserMapper userMapper = session.getMapper(UserMapper.class);

           userMapper.delete("1");
           session.commit();//提交事務
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           session.close();
       }
 }

}

13、整個項目的目錄結構如下:

015234328

 

14、源碼下載地址:http://pan.baidu.com/s/1gOL9a(源碼中包含用servlet調用mybatis)

     (1)、http://localhost:8080/mybatisTest/UserServlet?action=save //添加用戶

     (2)、http://localhost:8080/mybatisTest/UserServlet?action=update&id=1 //更新用戶

    (3)、http://localhost:8080/mybatisTest/UserServlet?action=find&id=1 //查找用戶

    (4)、http://localhost:8080/mybatisTest/UserServlet?action=delete&id=1 //刪除用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章