2.第一個MyBatis程序
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程序