<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
為什麼要學SpringBoot和Mybatis呢,我覺得作為一個合格的後端程式設計師增刪改查(CRUD)肯定是要會的,而且是最基本的一項技能,不然怎麼完成給你分配的需求呢;而為什麼選擇SpringBoot和Mybatis呢,首先選擇SpringBoot是可以理解的,畢竟作為一款輕量型的框架,整合了很多元件和Tomcat伺服器,讓我們的開發更簡便,當然最主要的還是因為博主只會SpringBoot 。好了開個玩笑,下面說為啥用SpringBoot加Mybatis,因為除了Mybatis還有Mybatis-Plus和Hibernate可以選擇,而且這兩個封裝了CRUD方法,都不用自己寫sql語句,開發起來更加快捷;而Mybatis則是要自己編寫sql語句的,對於當時的我來說我覺得還是學的基礎點,畢竟後面這兩個可以用來進階,也學起來畢竟簡單,所以讓我們開始用SpringBoot整合Mybatis吧!
首先我們應該先建立一個資料庫,用於操作我們CRUD的資料(可以使用視覺化工具進行建立,也可以使用SQL命令進行建立),資料庫的名字可以自己定義,建立完資料庫之後,我們就要建立表進行資料的儲存了,表的名字叫’ user ‘表,欄位可以自己設定,只要和後邊自己建立的實體對應就好了。
CREATE TABLE `user` ( `userId` bigint NOT NULL AUTO_INCREMENT, `userName` varchar(255) COLLATE utf8mb4_bin NOT NULL, `userAddress` varchar(255) COLLATE utf8mb4_bin NOT NULL, PRIMARY KEY (`userId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
用IDEA建立SpringBoot專案:
以上是所需要的依賴包,如果忘記引入的,可以直接新增即可,不用再重新建立專案了
首先需要建立四個資料夾,分別是:Entity(使用者實體)、Controller、Service、Dao,然後還需要在 resource 目錄下新建 Mapper 目錄,這個 Mapper 目錄是用來存放 SQL 語句的地方。到這裡我覺得需要理解一下MVC模式,由於我們的存取一層呼叫一層,然後查詢到資料之後再返回過去的,所以我們的層級應該是:Controller(控制層,也是接收前端傳遞引數的層) -> Service(業務層,我們所有的業務,如判斷和一些迴圈語句就需要寫到這個層當中) -> Dao(持久層,這個層主要是和資料庫打交道的,主要負責資料的操作,也就是CRUD操作) -> 資料庫,
如下圖所示:
沒有啥好的畫圖工具,就隨便畫了一下,反正資料的流向就是這樣的,大家可以湊合看一下。
在resources資料夾下建立yml檔案,並輸入如下內容:
server: port: 8080 //本機的埠號 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/自己資料庫的名稱?useUnicode=true & characterEncoding=utf-8 & useSSL=true & serverTimezone=Asia/Shanghai username: root //資料庫的使用者名稱 password: xxxxxx //資料庫的密碼 mybatis: mapper-locations: classpath:/Mapper/*.xml type-aliases-package: com.example.test.Entity //這個是掃描到Entity實體包的路徑,可根據自己的設定
設定好yml檔案之後,我們去看右側的Databases去看看能不能連線自己原生的MySQL資料庫:
依次分別填,資料表名字(這裡我們的表是user表),使用者名稱和密碼、還有資料庫名
Entity包:建立一個UserEntity類,內容如下:
public class UserEntity { private Integer userId; private String userName; private String userAddress; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } }
Dao包:建立一個UserDao介面,內容如下:
import com.example.test.Entity.UserEntity; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface UserDao { List<UserEntity> queryLimit(Integer currentPage, Integer pageSize); Integer addUser(UserEntity user); Integer updateUser(UserEntity user); Integer deleteUser(UserEntity user); }
Service包:建立一個UserService類,內容如下:
import com.example.test.Dao.UserDao; import com.example.test.Entity.UserEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service("UserService") public class UserService { @Autowired private UserDao userDao; public List<UserEntity> queryLimit(Integer currentPage,Integer pageSzie){ return userDao.queryLimit(currentPage,pageSzie); } public Integer addUser(UserEntity user){ return userDao.addUser(user); } public Integer updateUser(UserEntity user){ return userDao.updateUser(user); } public Integer deleteUser(UserEntity user){ return userDao.deleteUser(user); } }
Controller包:建立一個UserController類,內容為:
import com.example.test.Entity.UserEntity; import com.example.test.Service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("user") public class UserController { @Autowired private UserService userService; String message = ""; @RequestMapping("/queryLimit") public List<UserEntity> queryLimit(@RequestParam("currentPage") Integer currentPage,@RequestParam("pageSize") Integer pageSize){ return userService.queryLimit(currentPage,pageSize); } @PostMapping("/addUser") public String addUer(@RequestBody UserEntity user){ //用Mybatis執行insert語句的時候,插入成功會返回1,不成功則會丟擲異常,捕獲一下異常就好 try { userService.addUser(user); message = "增加使用者成功"; }catch (Exception exception){ message = "增加使用者異常"; } return message; } @PutMapping("/updateUser") public String updateUser(@RequestBody UserEntity user){ //Mybatis的更新操作成功返回1,使用者不存在返回0,失敗則拋異常 try { message = userService.updateUser(user) == 1?"更新使用者成功":"使用者不存在,更新失敗"; }catch (Exception exception){ message = "更新異常"; } return message; } @DeleteMapping("/deleteUser") public String deleteUser(@RequestBody UserEntity user){ //Mybatis的刪除操作和更新返回值一樣,成功返回1,使用者不存在返回0,失敗則拋異常 try { message = userService.deleteUser(user) == 1?"刪除使用者成功":"使用者不存在,刪除失敗"; }catch (Exception exception){ message = "刪除異常"; } return message; } }
編寫完上面的內容之後我們需要在Mapper資料夾下建立mapper.xml檔案,如下圖:
mapper.xml檔案內容如下:需要注意的地方是namespace:這個路徑是你的UserDao介面的路徑,因為你傳過來的資料需要和xml進行一個繫結,這樣你編寫的SQL語句才能接收到你前端傳過來的資料(大體意思可以這麼理解),而id則是和你UserDao中的介面方法相對應,比如我的UserDao介面中的查詢方法命名是queryLimit,那麼我在xml檔案中的查詢語句的id就應該和queryLimit想對應,即:id=“queryLimit”。
resultType是返回資料的型別
parameterType則是傳入的資料型別
<?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.example.test.Dao.UserDao"> <select id="queryLimit" resultType="UserEntity"> select * from user limit #{currentPage},#{pageSize}; </select> <insert id="addUser" parameterType="UserEntity"> insert into user(userName,userAddress) values(#{userName},#{userAddress}); </insert> <update id="updateUser" parameterType="UserEntity"> update user set userName=#{userName},userAddress=#{userAddress} where userId=#{userId}; </update> <delete id="deleteUser" parameterType="UserEntity"> delete from user where userId=#{userId}; </delete> </mapper>
最後我們需要在啟動類加一點東西(MapperScan掃描的是我們Dao包的地址,填寫自己的就好)
查詢使用者資料->地址為:http://localhost:8080/user/queryLimit?currentPage=0&pageSize=5
新增使用者資料-> 地址為:http://localhost:8080/user/addUser
資料庫也能看到資料:
更新使用者資料-> 地址為:http://localhost:8080/user/updateUser
更新之後資料庫資料為:
刪除使用者資料-> 地址為:http://localhost:8080/user/deleteUser
檢視資料庫資料已經刪除:
寫到這差不多就整合完成了,因為時間的原因,有些小細節就不詳細寫了(比如某些欄位到底有啥用和框架的介紹),後續大家學習的時候也可以自己去了解,本文基本是一步一步教大家整合Mybatis的
到此這篇關於SpringBoot整合Mybatis簡單實現增刪改查的文章就介紹到這了,更多相關SpringBoot整合Mybatis 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45