快速學習-Mybatis框架入門
- 2020 年 4 月 2 日
- 筆記
第2章 Mybatis 框架快速入門
通過前面的學習,我們已經能夠使用所學的基礎知識構建自定義的 Mybatis 框架了。這個過程是基本功的考驗,我們已經強大了不少,但現實是殘酷的,我們所定義的 Mybatis 框架和真正的 Mybatis 框架相比,還是顯得渺小。行業內所流行的 Mybatis 框架現在我們將開啟學習。
2.1 Mybatis 框架開發的準備
2.1.1 官網下載Mybatis 框架
從百度中「mybatis download」可以下載最新的 Mybatis 開發包。

進入選擇語言的界面,進入中文版本的開發文檔。


2.2 搭建 Mybatis 開發環境
2.2.1 創建maven 工程
創建 mybatis01 的工程, 工程信息如下: Groupid:com.itheima ArtifactId:mybatis01 Packing:jar
2.2.2 添加Mybatis3.4.5 的坐標
在 pom.xml 文件中添加 Mybatis3.4.5 的坐標,如下:
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> </dependencies>
2.2.3 編寫 User 實體類
/** * *<p>Title: User</p> *<p>Description: 用戶的實體類</p> */ public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address;public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex + ", address=" + address + "]"; } }
2.2.4 編寫持久層接口 IUserDao
IUserDao 接口就是我們的持久層接口(也可以寫成 UserDao 或者 UserMapper),具體代碼如下:
public interface IUserDao { /** *查詢所有用戶 *@return */ List<User> findAll(); }
2.2.5 編寫持久層接口的映射文件IUserDao.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="com.itheima.dao.IUserDao"> <!-- 配置查詢所有操作 --> <select id="findAll" resultType="com.itheima.domain.User"> select * from user </select> </mapper>
2.2.6 編寫 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> <!-- 配置 mybatis 的環境 --> <environments default="mysql"> <!-- 配置 mysql 的環境 --> <environment id="mysql"> <!-- 配置事務的類型 --> <transactionManager type="JDBC"></transactionManager> <!-- 配置連接數據庫的信息:用的是數據源(連接池) --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ee50"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource> </environment> </environments> <!-- 告知 mybatis 映射配置的位置 --> <mappers> <mapper resource="com/itheima/dao/IUserDao.xml"/> </mappers> </configuration>
2.2.7 編寫測試類
public class MybatisTest { public static void main(String[] args)throws Exception { //1.讀取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.創建 SqlSessionFactory 的構建者對象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使用構建者創建工廠對象 SqlSessionFactory SqlSessionFactory factory = builder.build(in); //4.使用 SqlSessionFactory 生產 SqlSession 對象 SqlSession session = factory.openSession(); //5.使用 SqlSession 創建 dao 接口的代理對象 IUserDao userDao = session.getMapper(IUserDao.class); //6.使用代理對象執行查詢所有方法List<User> users = userDao.findAll(); for(User user : users) { System.out.println(user); //7.釋放資源 session.close(); in.close(); }