1. 程式人生 > >2.第一個MyBatis程序

2.第一個MyBatis程序

exception 運行環境 dtd 需要 uil 語句 actor sql語句 配置文件

1.導入jar包

2.定義實體類

3.創建對應的表

4.定義Dao接口

1 public interface StudentDAO {
2     public void saveStudent(Student s);
3 }

5.定義映射文件

  映射文件,簡稱為mapper,主要完成Dao層中SQL語句的映射。具體映射的配置,後面會詳細講解

  映射文件名隨意,一般放在 dao 包中,最好和Dao名稱保持一致,我們這裏寫成mapper.xml

  這個mapper.xml 文件的約束文件可以從 官方文檔找到,

  

 1 <?xml version="1.0" encoding="UTF-8" 
?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="test"> 6 <!-- parameterType 可以省略 --> 7 <insert id="insertStudent"> 8 insert into student (age,name,score) values (#{age},#{name},#{score}); <!--
#{}中寫入的是Student類的屬性名 --> 9 </insert> 10 </mapper>

  註意:#{ }中寫入的是Student類的屬性名

  對於 parameterType 屬性,框架會自動根據用戶執行的SqlSession方法中的參數自動檢測到,所以parameterType 可以省略

6.定義主配置文件

  主配置文件的約束文件同樣從文檔中找到

  主配置文件名也可以隨意命名,這裏寫成 mybatis.xml

  主配置文件在這裏完成兩方面的功能:

    1.配置MyBatis運行環境 2.註冊映射文件

7.定義Dao實現類

 1 public class StudentDAOImpl implements StudentDAO {
 2     
 3     private SqlSession sqlSession;
 4     @Override
 5     public void saveStudent(Student s) {
 6         try {
 7             //1.讀取配置文件
 8             InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
 9             //2.創建SqlSessionFactory對象
10             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
11             //3.創建SqlSession對象
12             sqlSession = factory.openSession();
13             //4.執行操作
14             sqlSession.insert("insertStudent", s);
15             //5.SqlSession提交
16             sqlSession.commit();
17         } catch (IOException e) {
18             e.printStackTrace();
19         } finally {
20             //6.SqlSession關閉
21             if(sqlSession != null) {
22                 sqlSession.close();
23             }    
24         }
25     }
26 
27 }

8.定義測試類

 1 public class MyTest {
 2     
 3     @Test
 4     public void testAdd() {
 5         Student s = new Student();
 6         s.setAge(25);
 7         s.setName("xzk5");
 8         s.setScore(99);
 9         
10         StudentDAO studentDAO = new StudentDAOImpl();
11         studentDAO.saveStudent(s);
12     }
13 }

9.添加日誌控制文件

MyBatis 使用 Log4j 進行日誌處理,而 Login4j2 對其支持並不好,

所以在 MyBatis 中需要 log4j.properties 放入到項目的 src 目錄下。

若將日誌級別設置為 debug,則可以顯示出所執行的 SQL 語句、參數值、對 DB 的影響 條數等信息。若將級別設置為 trace,則還可顯示出查詢出的每條記錄的每個字段名及值。

不過,需要註意的是,若日誌對象使用根日誌對象 rootLogger,則會輸出太多的信息

1 ### direct log messages to stdout ###
2 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
3 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
4 log4j.appender.CONSOLE.Target=System.out
5 log4j.appender.CONSOLE.layout.ConversionPattern= %5p %c:%L - %m%n
6 
7 log4j.logger.test=DEBUG,CONSOLE

在 MyBatis 中,可以指定要輸出日誌的工作空間 namespace 的名字。此時,只會輸出該namespace 下執行的 SQL 的日誌內容

我們這裏的 namespace 是 test <mapper namespace="test">

2.第一個MyBatis程序