1. 程式人生 > >為什麼不用JDBC,而選擇Hibernate和Mybatis持久層框架

為什麼不用JDBC,而選擇Hibernate和Mybatis持久層框架

JDBC簡介

為什麼會出現Mybatis和Hibernate兩個人持久層框架

在學習java的時候,我們操作資料庫的步驟:

  1. 註冊驅動;
  2. 獲取資料庫連線;
  3. 拼接sql語句,設定sql引數;
  4. 執行sql語句;
  5. 處理sql語句;
  6. 處理sql返回結果;
  7. 關閉執行語句和資料庫連線;

例項:


private static Connection getConn() {
    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/samp_db";
    String username = "root";
    String password = "";
    Connection conn = null;
    try {
        Class.forName(driver); //classLoader,載入對應驅動
        conn = (Connection) DriverManager.getConnection(url, username, password);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return conn;
}

取得連線後,進行相應的sql操作(插入語句):

private static int insert(Student student) {
    Connection conn = getConn();
    int i = 0;
    String sql = "insert into students (Name,Sex,Age) values(?,?,?)";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement) conn.prepareStatement(sql);
        pstmt.setString(1, student.getName());
        pstmt.setString(2, student.getSex());
        pstmt.setString(3, student.getAge());
        i = pstmt.executeUpdate();
        pstmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return i;
}

我們每次都要做大量的相同的操作,並且還要對執行sql語句過程中所出現的各種異常和資源釋放進行處理,而真正涉及到業務功能的程式碼其實很少,這明顯影響了效率。    這時候Hibernate和Mybatis(前身ibatis)變橫空出世了。它們幫我們把哪些複雜的重複性的工作進行了抽象,從業務處理邏輯中剝離了,使得開發效率更高。

Hibernate和Mybatis框架的簡介自行百度 

如何配置mybaitis

建立一個Maven專案(mavan匯入jar包太方便了)

在pom檔案中新增我們需要的jar包:

  1. mysql的驅動
  2. mybatis的驅動
  3. 單元測試框架類
  4. 日記框架類

pom.xml檔案具體配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
 
	<groupId>com.young.learning</groupId>
	<artifactId>mybatis</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>mybatis</name>
	<url>http://maven.apache.org</url>
 
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
 
	<dependencies>
		<!-- 新增mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>
 
		<!-- 新增mysql驅動 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.40</version>
		</dependency>
 
		<!-- 新增junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
 
		<!-- 新增log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
	</dependencies>
 
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

在配置好pom.xml檔案。

mybatis有一個很重要的配置檔案configuration.xml,這個檔案是使用mybatis的核心

配置檔案configuration.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>
		<setting name="logImpl" value="LOG4J" />
	</settings>
 
	<!-- 和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>
 
	<mappers>
		<mapper resource="com\majing\learning\mybatis\dao\UserDaoMapper.xml" />
	</mappers>
 
</configuration>

我們先不管配置檔案中的細節配置,從配置上我們可以直觀的看出我們對日誌、資料庫連線地址和驅動都做了相關的配置。和日誌相關的還需要有一個配置檔案,用於控制日誌往什麼地方刷,這個配置檔案就是log4j.properties,具體配置格式如下:

log4j.rootLogger=DEBUG,mybatis,stdout 
 
log4j.appender.mybatis=org.apache.log4j.DailyRollingFileAppender
log4j.appender.mybatis.layout=org.apache.log4j.PatternLayout
log4j.appender.mybatis.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.mybatis.layout.ConversionPattern=%m%n
log4j.appender.mybatis.file=D:/data/logs/mybatis/mybatis.log
log4j.appender.mybatis.encoding=UTF-8
 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n 

至此,該有的配置檔案我們都已經準備好了!