欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot框架整合Mybatis簡單攻略

 更新時間:2021年10月15日 14:08:14   作者:spring小楊  
這篇文章主要介紹了SpringBoot框架整合Mybatis的簡單攻略,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

步驟 1 添加mybatis-starter依賴

訪問:https://mvnrepository.com/

搜索mybatis,找到 MyBatis Spring Boot Starter ,點(diǎn)進(jìn)去,復(fù)制到pom.xml

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>

我們就用最新的即可。

步驟 2 如何配置mybatis到SpringBoot項目

mybatis:
  mapper-locations: classpath:mybatis/*.xml
  type-aliases-package: com.java18.vipmgr.pojo

mapper-locations是定義xml文件所在的目錄。

在這里插入圖片描述

我們放在resources下面,也就是classpath中。

UserMapper.xml

<?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.java18.vipmgr.mapper.UserMapper">
    <select id="getAllUsers" resultType="User">
        select * from users
    </select>
</mapper>

里面就寫了一個方法,注意 namespace=“com.java18.vipmgr.mapper.UserMapper” 這個配置。這個表示該xml文件是和UserMapper.java綁定的。

在這里插入圖片描述

代碼如下

@Mapper
public interface UserMapper {
    public List<User> getAllUsers();
}

接下來再看 resultType=“User” 這個配置,為什么返回類型知道是User對象呢?

User類在這:

在這里插入圖片描述

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer points;
}

那是因?yàn)?,我們在application.yml中做了綁定,也就是這個:

mybatis:
  mapper-locations: classpath:mybatis/*.xml
  <font color="#c24f4a">type-aliases-package: com.java18.vipmgr.pojo</font>

所以,當(dāng)我們寫 resultType=“User” 的時候,就會自動匹配到com.java18.vipmgr.pojo包下面的User類。

至此,配置mybatis到SpringBoot項目就成功了!

步驟 3 測試查詢

在這里插入圖片描述

還是在controller中做測試,首先引入Mapper

@Autowired
UserMapper userMapper;

然后編寫查詢方法

@GetMapping("getAllViaMybatis")
public  List<User> getAllViaMybatis(){
    return userMapper.getAllUsers();
}

啟動服務(wù),訪問http://localhost:8888/user/getAllViaMybatis,得

[{“id”:1,“username”:“zhangsan”,“password”:“123”,“points”:1000},{“id”:2,“username”:“l(fā)isi”,“password”:“123”,“points”:200}]

步驟 4 mybatis注解方式

除了xml的方式,我們還可以使用mybatis注解方式
UserMapper.java

@Mapper
public interface UserMapper {
    public List<User> getAllUsers();
​
    @Select("select * from users where id = #{param1}")
    User findById(String id);
​
}

增加了一個方法,打了@Select注解,接收ID為參數(shù),這邊用的是mybatis的順序傳參法。

對應(yīng)的Controller方法

@GetMapping("findById")
public  User findById(String id){
    return userMapper.findById(id);
}

測試url:http://localhost:8888/user/findById?id=2

返回 {“id”:2,“username”:“l(fā)isi”,“password”:“123”,“points”:200}

這種的好處就是不用寫xml了,很方便,缺點(diǎn)是不夠靈活。

步驟 5 用注解方式做一個新增操作

mapper代碼

@Update("insert into users values (null,#{username},#{password},#{points})")
void addUser(User user);

controller代碼

@GetMapping("addUser")
public  boolean addUser(){
    User user = new User();
    user.setUsername("wangwu");
    user.setPassword("123");
    user.setPoints(1000);
    userMapper.addUser(user);
    return true;
}

測試效果

在這里插入圖片描述

PS: 因?yàn)閕d是自動增長的,所以插入null即可。

步驟 6 整合PageHelper分頁插件

pom.xml

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

導(dǎo)入這個依賴就行了,你可以什么都不配置的。

UserController,原來的查詢方法改成這樣

@GetMapping("getAllViaMybatis")
public  PageInfo getAllViaMybatis(int page,int rows){
    PageHelper.startPage(page,rows);
    PageInfo pageInfo = new PageInfo(userMapper.getAllUsers());
    return pageInfo;
}

接收page和rows作為分頁參數(shù)

測試url http://localhost:8888/user/getAllViaMybatis?page=1&rows=10

測試前記得多弄幾條數(shù)據(jù)在數(shù)據(jù)庫。

步驟 7 拓展知識:mybatis四種傳參方式

通過對象傳參

<insert id="insertEmp" parameterType="org.zhang.pojo.Emp">
    insert into emp (ename,job,hiredate,sal) values (#{ename},#{job},#{hiredate},#{sal});
    <selectKey resultType="int" keyColumn="empno" keyProperty="empno" order="AFTER">
        select last_insert_id()
    </selectKey>
</insert>

方式1:順序傳參法

<!--    此時因?yàn)橛卸鄠€參數(shù)  所以參數(shù)類型不能逐一制定 可以省略  有mybatis自動匹配-->
    <update id="updateEmpByNo2">
            update emp set ename=#{param1} where empno=#{param2}
    </update>

方式2:@Param注解傳參法
就是在方法的參數(shù)列表中置頂要傳的參數(shù),然后在sql中直接寫

public void updateEmpByNo2(@Param("name") String ename,@Param("no") Integer empno) throws IOException;
<update id="updateEmpByNo2">
        update emp set ename=#{name} where empno=#{no}
</update>

方式3:Map傳參法

重點(diǎn)就是 parameterType="hashmap" 這句話

public void updateEmpByNo3(Map<String,Object> argMap) throws IOException;
<update id="updateEmpByNo3" parameterType="hashmap">
        update emp set ename=#{name} where empno=#{no}
</update>

方式4:Java Bean傳參法

public User selectUser(Emp emp);
  
 <select id="selectUser" parameterType="org.zhang.pojo.Emp" resultMap="Emp">
     select * from user
     where user_name = #{userName} and dept_id = #{deptId}
 </select>

步驟 8 Mybatis中#{}和${}的區(qū)別是什么?

KaTeX parse error: Expected 'EOF', got '#' at position 10: {}是字符串替換,#̲{}是預(yù)處理; Mybatis…{}時,就是把${}直接替換成變量的值。

而Mybatis在處理#{}時,會對sql語句進(jìn)行預(yù)處理,將sql中的#{}替換為?號,調(diào)用PreparedStatement的set方法來賦值;

使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性。

步驟 9 Mybatis中模糊查詢like語句該怎么寫?

第1種:在Java代碼中添加sql通配符,就是把通配符也寫在字符串里面帶進(jìn)去。(推薦).

string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);

對應(yīng)的xml:

select * from foo where bar like #{value}

第2種:在sql語句中拼接通配符,會引起sql注入(不推薦)

string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);
​
 <span style="color: inherit;">對應(yīng)的xml:</span>
    <select id=”selectlike”>
         select * from foo where bar like "%"${value}"%"
    </select>

步驟 10 SpringBoot整合Mybatis-plus

MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。

在這里插入圖片描述

官網(wǎng)文檔地址:https://mp.baomidou.com/guide/

首先添加依賴,這一步是必不可少的。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1.tmp</version>
</dependency>

步驟 11 Mybatis-plus 如何與 Mybatis 共存?

因?yàn)樯厦娴拇a都是基于Mybatis的,所以,我們需要讓他們共存。辦法就是修改application.yml

mybatis-plus:
  mapper-locations: classpath:mybatis/*.xml
  type-aliases-package: com.java18.vipmgr.pojo

把mybayis改成mybatis-plus就可以了,之前的功能一個都不影響!

步驟 12 快速上手Mybatis-plus

因?yàn)槲覀兊念惷捅砻鞑灰恢?,所以需要做一個配置

User.java

@Data
@TableName("users")
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer points;
}

UserMapper.java

public interface UserMapper extends BaseMapper<User> {
 //省略之前的代碼
}

繼承了BaseMapper就可以擁有很多CRUD方法,這一點(diǎn)和JPA很像。

UserController.java

@GetMapping("getAllViaMybatisPlus")
public  IPage<User> getAllViaMybatisPlus(Integer page,Integer rows){
    IPage<User> pageInfo = new Page<>(page, rows);//參數(shù)一是當(dāng)前頁,參數(shù)二是每頁個數(shù)
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    pageInfo = userMapper.selectPage(pageInfo,wrapper);
    return pageInfo;
}

測試URL:http://localhost:8888/user/getAllViaMybatisPlus?page=1&rows=10

{“records”:[{“id”:1,“username”:“zhangsan”,“password”:“123”,“points”:1000},{“id”:2,“username”:“l(fā)isi”,“password”:“123”,“points”:200},{“id”:3,“username”:“wangwu”,“password”:“123”,“points”:1000},{“id”:4,“username”:“蔡互聽”,“password”:“123”,“points”:1000},{“id”:5,“username”:“荀傍支”,“password”:“123”,“points”:1000},{“id”:6,“username”:“養(yǎng)繡洋”,“password”:“123”,“points”:1000},{“id”:7,“username”:“夔惑腔”,“password”:“123”,“points”:1000},{“id”:8,“username”:“戎悅下”,“password”:“123”,“points”:1000},{“id”:9,“username”:“厲觸企”,“password”:“123”,“points”:1000},{“id”:10,“username”:“陸糟調(diào)”,“password”:“123”,“points”:1000}],“total”:22,“size”:10,“current”:1,“orders”:[],“hitCount”:false,“searchCount”:true,“pages”:3}

以上就是SpringBoot框架整合Mybatis簡單攻略的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot框架整合Mybatis的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • token工作機(jī)制及原理附Java生成token工具類

    token工作機(jī)制及原理附Java生成token工具類

    這篇文章介紹了token工作機(jī)制及原理,內(nèi)附Java生成token工具類Demo。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • java控制臺實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(IO版)

    java控制臺實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(IO版)

    這篇文章主要為大家詳細(xì)介紹了java控制臺實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(IO版),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 從0到1學(xué)SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解

    從0到1學(xué)SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解

    Spring?Cloud?Gateway的目標(biāo)提供統(tǒng)一的路由方式且基于Filter?鏈的方式提供了網(wǎng)關(guān)基本的功能,?例如:安全、監(jiān)控、指標(biāo)和限流?,這篇文章主要介紹了從0到1學(xué)SpringCloud之SpringCloud?gateway網(wǎng)關(guān)路由配置示例詳解,需要的朋友可以參考下
    2023-04-04
  • 使用Java實(shí)現(xiàn)串口通信

    使用Java實(shí)現(xiàn)串口通信

    這篇文章主要為大家詳細(xì)介紹了使用Java實(shí)現(xiàn)串口通信的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源

    Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • 詳解Java設(shè)計模式之職責(zé)鏈模式

    詳解Java設(shè)計模式之職責(zé)鏈模式

    責(zé)任鏈模式是一種行為設(shè)計模式,使多個對象都有機(jī)會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java默認(rèn)傳入時間段時間的實(shí)例

    Java默認(rèn)傳入時間段時間的實(shí)例

    下面小編就為大家?guī)硪黄狫ava默認(rèn)傳入時間段時間的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java程序員必須知道的5個JVM命令行標(biāo)志

    Java程序員必須知道的5個JVM命令行標(biāo)志

    這篇文章主要介紹了每個Java程序員必須知道的5個JVM命令行標(biāo)志,需要的朋友可以參考下
    2015-03-03
  • Spring Boot webflux使用方法解析

    Spring Boot webflux使用方法解析

    這篇文章主要介紹了Spring Boot webflux使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • mybaties?plus?selectMaps和selectList的區(qū)別說明

    mybaties?plus?selectMaps和selectList的區(qū)別說明

    這篇文章主要介紹了mybaties?plus?selectMaps和selectList的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論