為什麼不用JDBC,而選擇Hibernate和Mybatis持久層框架
阿新 • • 發佈:2018-12-16
JDBC簡介
為什麼會出現Mybatis和Hibernate兩個人持久層框架
在學習java的時候,我們操作資料庫的步驟:
- 註冊驅動;
- 獲取資料庫連線;
- 拼接sql語句,設定sql引數;
- 執行sql語句;
- 處理sql語句;
- 處理sql返回結果;
- 關閉執行語句和資料庫連線;
例項:
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包:
- mysql的驅動
- mybatis的驅動
- 單元測試框架類
- 日記框架類
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
至此,該有的配置檔案我們都已經準備好了!