一文教你學(xué)會(huì)如何使用MyBatisPlus
前言
本篇文章,我們通過(guò) MyBatis Plus 來(lái)對(duì)一張表進(jìn)行 CRUD 操作,來(lái)看看是如何簡(jiǎn)化我們開(kāi)發(fā)的。
1、創(chuàng)建測(cè)試表
創(chuàng)建 USER 表:
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `ID` int(11) NOT NULL, `USER_NAME` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL, `USER_AGE` int(11) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
向 USER 表中插入兩條數(shù)據(jù):
INSERT INTO `user` VALUES ('1', 'IT可樂(lè)', '18'); INSERT INTO `user` VALUES ('2', 'YSOcean', '22');
打開(kāi)表,發(fā)現(xiàn)有兩條數(shù)據(jù)了:
2、創(chuàng)建 Spring Boot 工程
通過(guò) IDEA 創(chuàng)建 Spring Boot 工程,如果不能連接 https://start.spring.io/ 網(wǎng)址,可以將網(wǎng)址變成 https://start.aliyun.com/ ,如下所示:
3、導(dǎo)入依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
首先 mybatis-plus 我們導(dǎo)入最新版 3.3.2。另外,由于我數(shù)據(jù)采用的是 MySql,所以這里導(dǎo)入了 Mysql 的連接依賴。
另外,為了簡(jiǎn)化 JavaBean 類的書(shū)寫,我這里額外導(dǎo)入一個(gè) lombok 插件依賴。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
通過(guò)這個(gè)依賴的相關(guān)注解,我們可以不用書(shū)寫繁瑣的 get/set 方法。
4、編寫數(shù)據(jù)庫(kù)配置文件
在 springboot 項(xiàng)目的 resource 目錄下,新建 application.yml 文件,添加如下內(nèi)容:
server: port: 8082 spring: datasource: url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=UTF-8 username: root password: root # >= 6.x: com.mysql.cj.jdbc.Driver # <= 5.x: com.mysql.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
注意:url 里面填寫的 mybatisplus 是我的數(shù)據(jù)庫(kù)名稱,注意修改,username 和 password 分別填寫自己的數(shù)據(jù)庫(kù)連接名稱和密碼。
5、編寫代碼
①、實(shí)體類 User.java
@Getter@Setterpublic class User {private Long id;
private String userName; private String userAge;
}②、創(chuàng)建 UserMapper 接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.ys.mybatisplusstudy.entry.User;
public interface UserMapper extends BaseMapper<User> {}
③、啟動(dòng)類增加 @MapperScan 注解
@SpringBootApplication@MapperScan("com.ys.mybatisplusstudy.mapper")public class MybatisplusstudyApplication {
public static void main(String[] args) { SpringApplication.run(MybatisplusstudyApplication.class, args); }
}如果不想在啟動(dòng)類加 @MapperScan 注解,也可在每個(gè) Mapper 接口上增加 @Mapper 注解。
所有配置上面都以完成,是不是很簡(jiǎn)單,接下來(lái)我們對(duì)這張表進(jìn)行 CRUD 測(cè)試。
6、CRUD 測(cè)試我們?cè)诰帉?UserMapper 接口時(shí),其繼承了一個(gè) BaseMapper 接口:
public interface UserMapper extends BaseMapper<User> {}我們進(jìn)入到 BaseMapper 內(nèi)部,發(fā)現(xiàn)其結(jié)構(gòu)如下:
這些方法便是我們常用的增刪改查了,下面我們分別演示幾個(gè)常用的。
①、insert:新增一條記錄
@SpringBootTest class MybatisplusstudyApplicationTests { @Autowired private UserMapper userMapper; /** * 新增一條記錄 */ @Test public void testInsert(){ User user = new User(); user.setId(3L); user.setUserName("test insert"); user.setUserAge("1"); int insert = userMapper.insert(user); System.out.println("影響記錄數(shù):"+insert); } }
執(zhí)行完畢后,我們查看數(shù)據(jù)庫(kù):
②、delete:刪除記錄
/** * 根據(jù)id刪除一條記錄 */ @Test public void testDeleteById(){ int num = userMapper.deleteById(3L); System.out.println("刪除的記錄數(shù)為:"+num); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("id",3L); userMapper.delete(wrapper); } /** * 構(gòu)造相關(guān)條件刪除記錄 */ @Test public void testDelete(){ QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("USER_NAME","test insert"); int num = userMapper.delete(wrapper); System.out.println("刪除的記錄數(shù)為:"+num); }
③、update:修改記錄
/** * 根據(jù)id修改 */ @Test public void testudpateById(){ User user = new User(); user.setId(3L); user.setUserName("test update"); int num = userMapper.updateById(user); System.out.println("修改的記錄數(shù)為:"+num); }
④、select:查詢記錄
/** * 查詢User表所有記錄 */ @Test public void testSelectAll(){ List<User> users = userMapper.selectList(null); users.forEach(x-> System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge())); } /** * 查詢指定記錄 */ @Test public void testSelectWrapper(){ QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("user_name","IT可樂(lè)"); List<User> users = userMapper.selectList(wrapper); users.forEach(x-> System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge())); }
發(fā)現(xiàn)沒(méi)有,做增刪改查是如此的絲滑流暢,都不用寫 SQL 語(yǔ)句了。
當(dāng)然,這都只是單表的簡(jiǎn)單玩法,后面我們會(huì)介紹高階玩法。
7、打印 SQL 語(yǔ)句
這里補(bǔ)充一個(gè)小知識(shí)點(diǎn),通過(guò)如下配置,我們可以查看執(zhí)行的 SQL 語(yǔ)句日志。
在 applicatio.yml 文件中,進(jìn)行如下配置:
# 配置slq打印日志 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
當(dāng)然,這種配置只是把 SQL 日志打印到控制臺(tái)便于我們調(diào)試,后面會(huì)介紹更加強(qiáng)大的 SQL 分析工具。
以上就是一文教你學(xué)會(huì)如何使用MyBatisPlus的詳細(xì)內(nèi)容,更多關(guān)于MyBatisPlus使用教程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java Jedis NOAUTH Authentication required問(wèn)題解決方法
這篇文章主要介紹了Java Jedis NOAUTH Authentication required問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Spring MVC的參數(shù)綁定和返回值問(wèn)題
這篇文章主要介紹了Spring MVC的參數(shù)綁定和返回值問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02解析Arthas協(xié)助排查線上skywalking不可用問(wèn)題
這篇文章主要為大家介紹了解析Arthas協(xié)助排查線上skywalking不可用的問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-02-02Java實(shí)現(xiàn)簡(jiǎn)單的掃雷小程序
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的掃雷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04Java網(wǎng)絡(luò)通信中URL與HTTP編程技術(shù)詳解
要想實(shí)現(xiàn)網(wǎng)絡(luò)編程,除了可以使用Socket之外,我們還可以利用URL編程或HTTP編程技術(shù),所以今天這篇文章,就給大家介紹一下URL編程和HTTP編程技術(shù),看看這兩種技術(shù)有什么特點(diǎn),文中有詳細(xì)的代碼講解,需要的朋友可以參考下2023-11-11