日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01-MyBatis入门程序

發布時間:2023/12/3 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 數據庫中,創建一個表,建表語句如下:

/* Navicat MySQL Data TransferSource Server : itlike Source Server Version : 50720 Source Host : localhost:3306 Source Database : mybatisTarget Server Type : MYSQL Target Server Version : 50720 File Encoding : 65001Date: 2018-12-04 14:13:49 */SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for customer -- ---------------------------- DROP TABLE IF EXISTS `customer`; CREATE TABLE `customer` (`cust_id` int(11) NOT NULL AUTO_INCREMENT,`cust_name` varchar(255) DEFAULT NULL,`cust_profession` varchar(255) DEFAULT NULL,`cust_phone` varchar(255) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,PRIMARY KEY (`cust_id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;-- ---------------------------- -- Records of customer -- ---------------------------- INSERT INTO `customer` VALUES ('1', '魯班', '射手', '13499887733', '12341241@qq.com'); INSERT INTO `customer` VALUES ('2', '李白', '刺客', '18977665521', 'libai@163.com'); INSERT INTO `customer` VALUES ('3', '阿軻', '刺客', '18977665997', 'aike@qq.com'); INSERT INTO `customer` VALUES ('4', '德瑪西亞', '肉盾', '13700997665', 'demaxiya.126.com6'); INSERT INTO `customer` VALUES ('5', '亞索', '戰士', '13586878987', 'yasuo@qq.com'); INSERT INTO `customer` VALUES ('6', '奶媽', '輔助', '13398909089', 'nama@qq.com'); INSERT INTO `customer` VALUES ('7', '劍圣', '刺客', '13398909088', 'jiansheng@163.com'); INSERT INTO `customer` VALUES ('8', '蓋倫', '肉盾', '15923242231', 'gailun@126.com'); INSERT INTO `customer` VALUES ('9', '錘石', '輔助', '13398908900', '8888@163.com'); INSERT INTO `customer` VALUES ('10', '阿木木', '輔助', '13398908928', '13398908928@qq.com');

建表如圖:

使用 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

public class MyTest {@Testpublic void test() {// 調用Mybatis工具類SqlSession sqlSession = MybatisUtils.openSession();// 5.sql 查詢Customer customer = sqlSession.selectOne("queryCustomerById", 1);System.out.println(customer);// 6.關閉會話sqlSession.close();} }

MyBatis 查詢所有用戶

上面的測試代碼中查詢了 id 為 1 的用戶,這次我們來實現查詢所有用戶:
在 MyBatis 中,sql 語句都是寫在表對象的關系映射中的,我們在 Customer.xml 中添加以下語句:

<!--查詢所有的客戶,不需要參數--> <select id="queryAllCustomer" resultType="com.itlike.domain.Customer"> SELECT * FROM `customer` </select>

然后來到測試類 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入门程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。