【SSM】SSM之MyBatis框架:初識MyBatis

MyBatis框架簡介

MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和實體類映射成數據庫中的記錄。
爲了和數據庫進行交互,通常的做法是將SQL語句寫在Java代碼中,SQL語句和Java代碼耦合在一起不利於後期維護修改,而MyBatis能夠幫助我們將SQL語句和Java代碼分離,方便了後期因需求變動而對SQL語句進行修改。

MyBatis框架的使用

1、導入MyBatis所需的jar包:

這其中包括了MyBatis核心包、Mysql連接驅動包。
在這裏插入圖片描述

2、創建一個測試表:

數據庫中的表數據如下:
在這裏插入圖片描述

3、在 src 下創建包和接口:

這裏包名爲“cn.jingpengchong.flower.dao”,接口爲IFlowerDao:

package cn.jingpengchong.flower.dao;

public interface IFlowerDao {
	int count();
}
3、在 src 下創建xml全局配置文件:

這裏叫做“mybatis.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>
	<!-- default:默認引用environment的id,當前所使用的環境 -->
	<environments default="default">
		<!-- 聲明可以使用的環境 -->
		<environment id="default">
			<!-- 使用原生JDBC事務 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 使用數據庫連接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 這裏指定映射的xml文件 -->
	</mappers>
</configuration>

<transactionManager/>的type 屬性可取值:

  • JDBC:事務管理使用 JDBC 原生事務管理方式
  • MANAGED:把事務管理轉交給其他容器,原生JDBC事務setAutoMapping(false)

<dataSouce/>的type 屬性可取值:

  • POOLED:使用數據庫連接池
  • UNPOOLED:不實用數據庫連接池,和直接使用 JDBC 一樣
  • JNDI:java 命名目錄接口技術
4、創建對應模塊的xml映射文件:

在src下創建名爲“flower.xml”的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="cn.jingpengchong.pojo.Flower">
	<!-- 
		id:方法名
		parameterType:參數類型
		resultType:返回值類型
	 -->
	 <!-- 查詢數據總條數的方法 -->
	 <select id="count" resultType="int">
	 	select count(*) from flower
	 </select>
</mapper>

namespace用於作爲該文件在項目中的唯一標識,並且指明其關聯的接口。

5、將映射文件“flower.xml”添加到“mybatis.xml”文件中的<mappers>標籤中,如下:
<mappers>
	<mapper resource="flower.xml"/>
</mappers>
6、測試(後期用框架實現):

這裏新建一個包“cn.jingpengchong.test”,在其中新建一個文件“Test.java”:
new SqlSessionFactoryBuilder().build(is)執行之後,mybatis會先讀取mybatis.xml文件對應的InputStream,然後根據mybatis.xml文件中的mappers標籤找到user_info.xml文件,然後再根據user_info.xml文件找到對應的Dao層接口IUserInfoDao,並且生成代理對象。

package cn.jingpengchong.test;

import java.io.IOException;
import java.io.InputStream;

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

import cn.jingpengchong.flower.dao.IFlowerDao;

public class Test {
	public static void main(String[] args) throws IOException {
		//加載配置文件
		InputStream is = Resources.getResourceAsStream("mybatis.xml");
		//獲取SqlSessionFactory對象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		//獲取SqlSession對象,代表與數據庫的一次會話,用完需要關閉。注意:由於SqlSession爲非線程安全的,所以該變量應定義爲局部變量,不要定義成全局變量
		SqlSession session = factory.openSession();	
		//獲取IFlowerDao接口實現類對象
		IFlowerDao mapper = session.getMapper(IFlowerDao.class);
		//調用count方法獲取表中記錄的總數
		int count = mapper.count();
		System.out.println(count);
		session.close();
	}
}

運行結果爲:5
附:Mybatis的DTD文件下載地址:

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