第一個Mybatis程式
一、環境:
1、JDK1.8
2、MYSQL5.7
3、IDEA
4、MAVEN 3.63
二、Mybatis認識:
1、檢視官方文檔
2、檢視百度百科
MyBatis 是一款優秀的持久層架構,它支援定制化 SQL、存儲過程以及進階映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設定參數以及擷取結果集。MyBatis 可以使用簡單的 XML 或 注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為資料庫中的記錄。
3、什麼是持久層架構:
所謂"持久"就是将資料儲存到可掉電式儲存設備中以便今後使用,簡單的說,就是将記憶體中的資料儲存到關系型資料庫、檔案系統、消息隊列等提供持久化支援的裝置中。
持久層就是系統中專注于實作資料持久化的相對獨立的層面。
持久層設計的目标包括:
- 資料存儲邏輯的分離,提供抽象化的資料通路接口。
- 資料通路底層實作的分離,可以在不修改代碼的情況下切換底層實作。
- 資源管理和排程的分離,在資料通路層實作統一的資源排程(如緩存機制)。
- 資料抽象,提供更面向對象的資料操作。
二、搭建環境:
1、建立一個maven 在pom.xml中導入依賴(mysql驅動、mybatis、junit)
1
2
3
4 mysql
5 mysql-connector-java
6 5.1.47
7
8
9
10 org.mybatis
11 mybatis
12 3.5.2
13
14
15
16 junit
17 junit
18 4.11
19 test
20
21
2、連接配接資料庫(database->mysql)必須mysql已經安裝配置

3、mybatis 核心檔案的配置 -->resources -> mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 /p>
4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
4、建立 工具類 com.guo.untiul ->MybatishUtils
1 pcublic clnassMybaatisUtiils {j2n public staticSqlSessionFactory sqlSessionFactory;3 static{4 try{5 String resource = "mybatis-config.xml";6 InputStream inputStream =Resources.getResourceAsStream(resource);7 sqlSessionFactory = newSqlSessionFactoryBuilder().build(inputStream);8 } catch(IOException e) {9 e.printStackTrace();10 }11 }12
13 //建立SqlSession 的執行個體
14 public staticSqlSession getSqlSession(){15 returnsqlSessionFactory.openSession();16 }17 }
三、編寫代碼:
1、建立實體類 com.guo.pojo->User
1 public classUser {2 private intid;3 privateString username;4 privateString password;5
6 publicUser() {7 }8
9 public User(intid, String username, String password) {10 this.id =id;11 this.username =username;12 this.password =password;13 }14
15 @Override16 publicString toString() {17 return "User{" +
18 "id=" + id +
19 ", username='" + username + '\'' +
20 ", password='" + password + '\'' +
21 '}';22 }23
24 public intgetId() {25 returnid;26 }27
28 public void setId(intid) {29 this.id =id;30 }31
32 publicString getUsername() {33 returnusername;34 }35
36 public voidsetUsername(String username) {37 this.username =username;38 }39
40 publicString getPassword() {41 returnpassword;42 }43
44 public voidsetPassword(String password) {45 this.password =password;46 }47 }
2、建立接口 com.guo.dao->UserMapper
1 public interfaceUserMapper {2 ListgetUserList();3 }
3、建立sql語句映射檔案com.guo.dao->UserMapper.xml(有之前的實作Dao接口DaoImpl轉為Mapper.xml)
1 <?xml version="1.0" encoding="UTF-8" ?>
2 /p>
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
6
7
8 select *from student.user9
10
4、編寫測試類:在test檔案夾建立測試類com.guo.dao->UserMapperTest
1 public classUserMapperTest {2 @Test3 public voidtest(){4 //擷取SqlSession對象
5 SqlSession sqlSession =MybatisUtils.getSqlSession();6 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);7 List userList =userMapper.getUserList();8 for(User user : userList) {9 System.out.println(user);10 }11
12 //關閉SqlSession對象
13 sqlSession.close();14 }15 }
這樣子還是不能擷取資料庫資料,還會有什麼異常,讓我們來分析下原因:
四、異常處理:
1、BindingException:(綁定異常)
解決方法:在resources -> mybatis-config.xml配置maven
1
2
3
2、ExceptionInInitializerError:(初始化異常)
解決方法:在pom.xml檔案中增加資源過濾
1
2
3
4 src/main/java
5
6 ***.xml
8
9 false
10
11
12 src/main/resources
13
14 ***.xml
16
17 false
18
19
20
五、結果: