MyBatis學習(一)簡單入門程序


 

 

 

MyBatis入門學習

  MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 201311月遷移到Github

  MyBatis是一個優秀的持久層框架,它對jdbc的操作數據庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如注冊驅動、創建connection、創建statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。   

架構圖:

1、 mybatis配置   

SqlMapConfig.xml,此文件作為mybatis的全局配置文件,配置了mybatis的運行環境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作數據庫的sql語句。此文件需要在SqlMapConfig.xml中加載。

2、 通過mybatis環境等配置信息構造SqlSessionFactory即會話工廠

3、 由會話工廠創建sqlSession即會話,操作數據庫需要通過sqlSession進行。

4、 mybatis底層自定義了Executor執行器接口操作數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。

5、 Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sqlid即是Mapped statementid

6、 Mapped Statementsql執行輸入參數進行定義,包括HashMap、基本類型、pojoExecutor通過Mapped Statement在執行sql前將輸入的java對象映射至sql中,輸入參數映射就是jdbc編程中對preparedStatement設置參數。

7、 Mapped Statementsql執行輸出結果進行定義,包括HashMap、基本類型、pojoExecutor通過Mapped Statement在執行sql后將輸出結果映射至java對象中,輸出結果映射過程相當於jdbc編程中對結果的解析處理過程。

入門案例:  

     mybaits的代碼由github.com管理

下載地址:https://github.com/mybatis/mybatis-3/releases

1.1.1. 創建java工程

1.1.2. 加入jar

1.1.3. 加入配置文件

      如下圖創建資源文件夾config,加入log4j.propertiesSqlMapConfig.xml配置文件

      

 

1.1.4. log4j.properties(用來輸出日志)

 

config下創建log4j.properties如下:

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

1.1.5. SqlMapConfig.xml (SqlMapConfig.xmlmybatis核心配置文件,配置文件內容為數據源、事務管理。)

config下創建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>

<!-- 和spring整合后 environments配置將廢除 -->

<environments default="development">

<environment id="development">

<!-- 使用jdbc事務管理 -->

<transactionManager type="JDBC" />

<!-- 數據庫連接池 -->

<dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url"

value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />

<property name="username" value="root" />

<property name="password" value="root" />

</dataSource>

</environment>

</environments>

</configuration>

 

1.1.6. 創建pojo

pojo類作為mybatis進行sql映射使用,po類通常與數據庫表對應,

 User.java如下:

Public class User {

private Integer id;

private String username;// 用戶姓名

private String sex;// 性別

private Date birthday;// 生日

private String address;// 地址

get/set……

 

 

1.1.7. sql映射文件

config下的sqlmap目錄下創建sql映射文件User.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:命名空間,用於隔離sql,還有一個很重要的作用,后面會講 -->

<mapper namespace="test">

</mapper>

 

1.1.7. 第七步:加載映射文件

mybatis框架需要加載Mapper.xml映射文件

users.xml添加在SqlMapConfig.xml,如下:

1.1.8. 映射文件:

user.xml中添加select標簽,編寫sql

<?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:命名空間,用於隔離sql,還有一個很重要的作用,后面會講 -->

<mapper namespace="test">

 <!-- id:statement的id 或者叫做sqlid-->

<!-- parameterType:聲明輸入參數的類型 -->

<!-- resultType:聲明輸出結果的類型,應該填寫pojo的全路徑 -->

<!-- #{}:輸入參數的占位符,相當於jdbc的? -->

<select id="queryUserById" parameterType="int"

resultType="cn.itcast.mybatis.pojo.User">

SELECT * FROM `user` WHERE id  = #{id}

</select>

 </mapper>

1.1.9. 測試程序:

測試程序步驟:

 1. 創建SqlSessionFactoryBuilder對象

 2. 加載SqlMapConfig.xml配置文件

 3. 創建SqlSessionFactory對象

 4. 創建SqlSession對象

 5. 執行SqlSession對象執行查詢,獲取結果User

 6. 打印結果

 7. 釋放資源

 

MybatisTest編寫測試程序如下:

public class MybatisTest {

private SqlSessionFactory sqlSessionFactory = null;

 @Before

public void init() throws Exception {

// 1. 創建SqlSessionFactoryBuilder對象

SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

 // 2. 加載SqlMapConfig.xml配置文件

InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

 // 3. 創建SqlSessionFactory對象

this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

}

 @Test

public void testQueryUserById() throws Exception {

// 4. 創建SqlSession對象

SqlSession sqlSession = sqlSessionFactory.openSession();

 // 5. 執行SqlSession對象執行查詢,獲取結果User

// 第一個參數是User.xml的statement的id,第二個參數是執行sql需要的參數;

Object user = sqlSession.selectOne("queryUserById", 1);

 // 6. 打印結果

System.out.println(user);

 // 7. 釋放資源

sqlSession.close();

}

}

 運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM