Mybatis入門指南之實現對數據庫增刪改查
前言
我們關於Spring和Spring MVC的學習也有一段時間瞭,都還沒有進行過數據庫的操作,而在實際項目中數據庫是必不可少的部分,所以我們接下來將來學習Mybatis框架來對數據庫進行一些操作。
MyBatis
簡介
Mybatis原本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation遷移到瞭google code,並且改名為MyBatis,2013年11月遷移到Github。Mybatis是一個實現瞭數據持久化的開源框架,簡單理解就是對JDBC進行封裝封裝再封裝。
所以當看到iBatis的時候我們就應該知道,iBatis就是Mybatis。現在還有很多我們引入的包名還是寫的是iBatis。
優點
- 與JDBC相比,減少瞭50%以上的代碼量。
- Mybatis是最簡單的持久化框架,小巧並且簡單易學。
- Mybatis靈活,不會對應用程序或者數據庫的現有設計強加任何影響,SQL寫在XML裡,從程序代碼中徹底分離,降低耦合度,便於統一管理和優化,可重用。
- 提供XML標簽,支持編寫動態SQL語句(XML中使用if, else)。
- 提供映射標簽,支持對象與數據庫的ORM字段關系映射(在XML中配置映射關系,也可以使用註解)。
缺點
- SQL語句的編寫工作量較大。
- SQL語句依賴於數據庫,導致數據庫移植性差,不能隨意更換數據庫。
搭建第一個Mybatis程序
新建項目。
自定義項目名,我這裡定義為myBatisDemo。
引入pom.xml依賴。
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </dependency>
我們需要引入mybatis依賴、mysql依賴和lombok依賴。
lombok依賴我們前面就使用過,我們可以簡化實體類的開發。而mybatis依賴和mysql依賴是我們數據庫的依賴。
新建數據庫數據表。
我們對數據庫進行操作首先就要有數據庫。所以我們來新建一個數據庫。我們這裡使用工具創建,不需要手敲SQL命令。
新建一個數據庫名為test,庫中建一個名為Students的數據表。
現在我們的表中還沒有數據,等下我們使用代碼來對數據庫進行增刪改查的操作。
新建Student實體類。
package com.xyj.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Student { private long id; private String name; private int age; }
我們實體類中的屬性要對應我們數據庫表中的字段。
配置Mybatis的配置文件。
在resources資源文件夾下面創建config.xml配置文件。
在comfig.xml文件中添加以下配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test? useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> </configuration>
driver、url、username、password分別對應數據庫驅動、路徑、用戶名和密碼。
創建StudentMapper.xml文件。
我們在開發中需要為每個實體類創建mapper文件,我們需要在其中寫我們對該該實體類進行操作的SQL語句。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xyj.mapper.StudentMapper"> <!-- 增 --> <insert id="add" parameterType="com.xyj.entity.Student"> insert into students (id,name,age) values (#{id},#{name},#{age}) </insert> <!-- 刪 --> <delete id="delete" parameterType="int"> delete from students where id = #{id}; </delete> <!-- 改 --> <update id="update" parameterType="com.xyj.entity.Student"> update students set age = #{age} where id = #{id} </update> <!-- 查 --> <select id="query" resultType="com.xyj.entity.Student"> select * from students </select> </mapper>
在mapper文件中增刪改查對應的標簽為insert
、delete
、update
、select
。標簽中id
是我們之後調用的名字,parameterType
表示我們需要傳遞的值的類型。我們這裡傳值使用#{}
的格式。
在config.xml中加入mapper。
<mappers> <mapper resource="com/xyj/mapper/StudentMapper.xml"></mapper> </mappers>
調用Mybitis原生接口進行操作
public static void main(String[] args) { InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml"); SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); }
我們首先使用輸入流對config.xml文件進行讀取,然後使用sqlSessionFactoryBuilder
的build
方法創建sqlSessionFactory
,再用sqlSessionFactory
的openSession
方法創建sqlSession
。
增
Student student1 = new Student(1L,"小明",16); Student student2 = new Student(2L,"小紅",15); sqlSession.insert("com.xyj.mapper.StudentMapper.add",student1); sqlSession.insert("com.xyj.mapper.StudentMapper.add",student2); sqlSession.commit(); sqlSession.close();
調用sqlSession
的insert
方法,傳入第一個參數為我們實體類對應mapper文件中對應的操作id
,第二個參數為數據。
我們執行完sql之後還需要提交事務,最後釋放資源。
執行結果:
成功在數據表中添加瞭兩條數據。
刪
sqlSession.delete("com.xyj.mapper.StudentMapper.delete",2);
我們這裡調用delete
方法,刪除id
為2的學生數據。
執行結果:
刪除成功!
改
Student student = new Student(1L,"小剛",19); sqlSession.update("com.xyj.mapper.StudentMapper.update",student);
調用update
方法修改數據。
執行結果:
修改數據成功!
查
我們再添加兩條數據。
List<Student> studentList = sqlSession.selectList("com.xyj.mapper.StudentMapper.query"); System.out.println(studentList);
我們用List接收查詢的數據再打印出來。
打印結果:
[Student(id=1, name=小剛, age=19), Student(id=2, name=小明, age=15), Student(id=3, name=小紅, age=17)]
查詢成功!
總結
關於Mybatis入門配置以及使用原生接口進行增刪改查操作就是這樣,接下來的內容我將來講解Mapper代理的方式進行操作。喜歡的小夥伴們多多支持,你們的支持就是我更新的動力。
到此這篇關於Mybatis入門指南之實現對數據庫增刪改查的文章就介紹到這瞭,更多相關Mybatis對數據庫增刪改查內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java Mybatis框架增刪查改與核心配置詳解流程與用法
- Mybatis示例講解註解開發中的單表操作
- 一篇文章帶你學習JAVA MyBatis底層原理
- MyBatis配置的應用與對比jdbc的優勢
- Mybatis結果集映射一對多簡單入門教程