01-MyBatis入门程序
MyBatis入門程序
目錄
- 1. 下載 Mybatis 核心包
- 2. 創建工程,引入 MyBatis 核心包及依賴包
- 3. 創建 customer 表,建立與表對應的 domain
- 使用 lombok,開啟注解
- 創建 Customer 類
- 4. 創建 MyBatis 核心配置文件 SqlMappingConfig.xml
- 5. 創建表對象的關系映射 Mapping 文件編寫 sql 語句
- 6. 在核心配置文件當中引入 Mapping
- 7. 創建工廠,執行 sql 語句
- 抽取工具類
- MyBatis 查詢所有用戶
- MyBatis 整體架構
- 總結
- parameterType
- resultType
- selectOne
- selectList
?
1. 下載 Mybatis 核心包
MyBatis官網
MyBatis-github下載地址
2. 創建工程,引入 MyBatis 核心包及依賴包
這里為了方便學習,我們利用 Idea 創建一個普通的 Java 工程,后期再整合成 Web 工程。
創建完工程后,新建一個 lib 文件夾用來存放jar包。將 MyBatis 所需的jar包都放到 lib 文件夾中。
然后選中所有jar包,右鍵選擇 add as library,將jar包添加到工程中,jar包前面出現箭頭則添加完成。
3. 創建 customer 表,建立與表對應的 domain
首先進入數據庫的圖形化工具,然后創建一個 叫 mybatis 的數據庫,字符集設為 utf-8;
在 mybatis 數據庫中,創建一個表,建表語句如下:
建表如圖:
使用 lombok,開啟注解
使用 lombok 可以使用注解功能,注解可以減少代碼量。
首先要導入 lombok 的jar包,要使用注解必須在設置里勾選支持注解,如下圖:
創建 Customer 類
@Setter@Getter //使用注解生成 get 與 set 方法 public class Customer {private Integer cust_id;private String cust_name;private String cust_profession;private String cust_phone;private String email;@Overridepublic String toString() {return "Customer{" +"cust_id=" + cust_id +", cust_name='" + cust_name + '\'' +", cust_profession='" + cust_profession + '\'' +", cust_phone='" + cust_phone + '\'' +", email='" + email + '\'' +'}';} }?
4. 創建 MyBatis 核心配置文件 SqlMappingConfig.xml
在 src 文件下,創建一個 SqlMappingConfig.xml 文件,里面寫入配置代碼:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!-- spring整合后 environments配置將廢除 使用spring中的連接池 --><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="1234" /></dataSource></environment></environments> </configuration>5. 創建表對象的關系映射 Mapping 文件編寫 sql 語句
在 domain 包下創建一個與 domain 類名相同的 xml 文件,此處為 Customer.xml,在里面寫入編寫 sql 語句:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="myTest"><!--根據cust_id查詢客戶--><select id="queryCustomerById" parameterType="Int" resultType="com.itlike.domain.Customer">SELECT * FROM `customer` WHERE cust_id = #{cust_id}</select> </mapper>6. 在核心配置文件當中引入 Mapping
核心配置文件 SqlMappingConfig.xml 中,加載映射文件:
<!--加載映射文件--> <mappers><mapper resource="com/myxq/domain/Customer.xml"></mapper> </mappers>7. 創建工廠,執行 sql 語句
創建一個測試類 MyTest.java,位于 com.itlike.test 包中,利用單元測試運行代碼:
public class MyTest {@Testpublic void test() throws IOException {// 1.sqlSessionFactoryBuilder 加載配置文件SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 2.讀取配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMappingConfig.xml");// 3.獲取session工廠SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);// 4.獲取會話 ---JDBC 連接SqlSession sqlSession = sessionFactory.openSession();// 5.執行sql// selectOne 查詢一條記錄,如果查詢多條記錄會拋出異常Customer customer = sqlSession.selectOne("queryCustomerById", 1); // 查詢 ID 為1 的數據System.out.println(customer);// 6.關閉sessionsqlSession.close();}}運行結果:成功從數據庫中查詢到單個用戶的數據。
Customer{cust_id=2, cust_name='李白', cust_profession='刺客', cust_phone='18977665521', email='libai@163.com'}抽取工具類
在 MyBatis 中有些資源只需要加載一次,并且每次做查詢時都是大量相同的代碼,因此我們可以抽取出一個工具類,專門用來加載資源。
創建一個 MybatisUtils.java 文件作為工具類:
// 抽取工具類 public class MybatisUtils {public static final SqlSessionFactory sessionFactory;static { // 由于這些東西只需要加載一次,所以放入 static 代碼塊中// 1.獲取 SqlSessionFactoryBuilderSqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 2.加載映射文件InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("sqlMappingConfig.xml");} catch (IOException e) {e.printStackTrace();}// 3.獲取 sessionFactorysessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);}public static SqlSession openSession(){return sessionFactory.openSession();}}抽取出工具類之后,之前的代碼就變得十分簡潔了。
測試類 MyTest.java
MyBatis 查詢所有用戶
上面的測試代碼中查詢了 id 為 1 的用戶,這次我們來實現查詢所有用戶:
在 MyBatis 中,sql 語句都是寫在表對象的關系映射中的,我們在 Customer.xml 中添加以下語句:
然后來到測試類 MyTest.java 中:
public void test2(){// 調用工具類SqlSession sqlSession = MybatisUtils.openSession();// 查詢 sql// selectList() 查詢一條或多記錄,返回 List 集合List<Customer> queryAllCustomer = sqlSession.selectList("queryAllCustomer");for (Customer customer : queryAllCustomer) {System.out.println(customer);} }運行結果:表中所有數據都被查出。
Customer{cust_id=1, cust_name='魯班', cust_profession='射手', cust_phone='13499887733', email='12341241@qq.com'} Customer{cust_id=2, cust_name='李白', cust_profession='刺客', cust_phone='18977665521', email='libai@163.com'} Customer{cust_id=3, cust_name='阿軻', cust_profession='刺客', cust_phone='18977665997', email='aike@qq.com'} Customer{cust_id=4, cust_name='德瑪西亞', cust_profession='肉盾', cust_phone='13700997665', email='demaxiya.126.com6'} Customer{cust_id=5, cust_name='亞索', cust_profession='戰士', cust_phone='13586878987', email='yasuo@qq.com'} Customer{cust_id=6, cust_name='奶媽', cust_profession='輔助', cust_phone='13398909089', email='nama@qq.com'} Customer{cust_id=7, cust_name='劍圣', cust_profession='刺客', cust_phone='13398909088', email='jiansheng@163.com'} Customer{cust_id=8, cust_name='蓋倫', cust_profession='肉盾', cust_phone='15923242231', email='gailun@126.com'} Customer{cust_id=9, cust_name='錘石', cust_profession='輔助', cust_phone='13398908900', email='8888@163.com'} Customer{cust_id=10, cust_name='阿木木', cust_profession='輔助', cust_phone='13398908928', email='13398908928@qq.com'}MyBatis 整體架構
總結
parameterType
指定輸入參數類型,mybatis 通過 ognl 從輸入對象中獲取參數值拼接在 sql 中。
resultType
指定輸出結果類型,mybatis 將 sql 查詢結果的一行記錄數據映射為 resultType 指定類型的對象。如果有多條數據,則分別進行映射,并把對象放到容器List中。
selectOne
查詢一條記錄,如果使用 selectOne 查詢多條記錄則拋出異常。
selectList
可以查詢一條或多條記錄,返回一個 List 集合。
總結
以上是生活随笔為你收集整理的01-MyBatis入门程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8g运行内存和16运行内存玩lol有区别
- 下一篇: 03-映射文件的sql语句中 #{} 和