1. 程式人生 > >Mybatis_1(認識)一個簡單的HelloWorld

Mybatis_1(認識)一個簡單的HelloWorld

1. 介紹:

MyBatis是支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。
MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索。
MyBatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java的
POJO(Plain Old Java Objects,普通的Java物件)對映成資料庫中的記錄。

過程:jdbc–>dbutil–>(mybatis)–>hibernate
所需部分:

    1.jar包
        asm-3.3.1.jar、
        cglib-2.2.2.jar、
        commons-logging-1.1.1.jar、
        log4j-1.2.16.jar、  
        mybatis-3.1.1.jar、
        mysql-connector-java-5.1.7-bin.jar、
        slf4j-api-1.6.2.jar
        slf4j-log4j12-1.6.2.jar
     2. 實體類
     3. 介面
     4.對映檔案
     5.配置檔案
     6.提供sqlsession的工具類

2.一個簡單的HelloWorld

2.1.實體類:User:

    public class User {
         private int id;
         private String name;
         private int age;
         //getter、setter...
    }

2.2.對映檔案:userMapper.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">
<!-- 為這個mapper指定一個唯一的namespace,namespace的值習慣上設定成包名+sql對映檔名,這樣就能夠保證namespace的值是唯一的 -->
<mapper namespace="com.test.helloworld.userMapper">
     <select id="selectAll" resultType="com.test.bean.User">
           select * from users
     </select>
</mapper>

2.3.配置檔案mybatis.cfg.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>
     <!-- 映入外部配置檔案 -->
     <properties resource="mysql.properties"></properties>
     <!-- 配置mybatis執行環境,development:開發模式,work:工作模式-->
     <environments default="development">
           <environment id="development">
                <!-- type=“jdbc”表示使用JDBC的提交和回滾來管理事務 -->
                <transactionManager type="JDBC" />
                <!-- mybatis提供了三種資料來源型別,POOLED,UNPOOLED,JNDI -->
                <!-- POOLED:表示支援JDBC資料來源的連線池 -->
                <!-- UNPOOLED:表示不支援JDBC資料來源的連線池 -->
                <!-- JNDI:表示支援外部資料來源連線池 -->
                <dataSource type="POOLED">
                     <property name="driver" value="${jdbc.driver}" />
                     <property name="url" value="${jdbc.url}" />
                     <property name="username" value="${jdbc.username}" />
                     <property name="password" value="${jdbc.password}" />
                </dataSource>
           </environment>
     </environments>
     <mappers>
           <!-- 一個簡單的HelloWorld查詢SQL對映 -->
           <mapper resource="com/test/helloworld/userMapper.xml"/>
     </mappers>
     <!-- 為實體類定義別名,簡化sql對映xml檔案中的引用 -->
     <!-- <typeAliases>
           <typeAlias type="com.test.bean.User" alias="_User"/>
     </typeAliases> -->
</configuration>

2.4.資料庫配置檔案mysql.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis1?useUincode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

2.5.測試類Test.java

public class Test {
     /**
      * 查詢所有User表中資料
      * @param args
      * @throws IOException
      */
     public static void main(String[] args) throws IOException {
           String resource = "mybatis.cfg.xml";
           //載入配置檔案
           Reader reader = Resources.getResourceAsReader(resource);
           //構建SQLsession工廠
           SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
           //獲取執行對映檔案中SQL語句的session
           SqlSession sqlSession = factory.openSession();
           //對映SQL的標識字串
           String statement = "com.test.helloworld.userMapper.selectAll";
           //執行查詢返回一個唯一user物件的sql
           List<User> user = sqlSession.selectList(statement);
           System.out.println(user);
     }
}

查詢結果:

[User [id=4, name=張三, age=21], User [id=5, name=張三三, age=21], User [id=6, name=張三, age=21], User [id=7, name=張三, age=21], User [id=9, name=張三三, age=21], User [id=10, name=3, age=3], User [id=11, name=張三, age=21]]