最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot 2.x整合mybatis實(shí)現(xiàn)增刪查和批量處理方式

 更新時(shí)間:2021年09月09日 15:14:42   作者:M_Blood  
這篇文章主要介紹了springboot 2.x整合mybatis實(shí)現(xiàn)增刪查和批量處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot 2.x整合mybatis實(shí)現(xiàn)增刪查和批量處理

話不多說,直接上代碼:

1.添加依賴

       <!--mybatis數(shù)據(jù)庫整合-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- MySQL的JDBC驅(qū)動(dòng)包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--引入第三方數(shù)據(jù)源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>

2.添加配置文件

#---------------------
# mybatis配置
#---------------------

#設(shè)置數(shù)據(jù)源(默認(rèn)數(shù)據(jù)源是com.zaxxer.hikari.HikariDataSource)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#數(shù)據(jù)庫登錄賬號
spring.datasource.username=root
#數(shù)據(jù)庫登錄密碼
spring.datasource.password=123456
#數(shù)據(jù)庫連接
spring.datasource.url=jdbc:mysql://localhost:3306/customer?useUnicode=true&characterEncoding=utf-8
#驅(qū)動(dòng)(會(huì)自動(dòng)檢測配置,可以注釋掉)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#設(shè)置需要被掃描的包
#mybatis.type-aliases-package=java.com.example.demo
#打印sql語句(一般用于本地開發(fā)測試)
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

3.Application.class添加掃描

(路徑為自己項(xiàng)目package的路徑)

@SpringBootApplication
@ServletComponentScan
@MapperScan("com.example.mapper") //mybatis包掃描
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

4.創(chuàng)建Mapper

@Mapper
public interface DemoMapper {

    //增
    @Insert("INSERT INTO demo(name,age)VALUES(#{name},#{age})")
    @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") //獲取插入后自動(dòng)生成的主鍵,keyProperty對應(yīng)類屬性名,keyColumn對應(yīng)數(shù)據(jù)庫字段名
    int add(Demo demo);

    //刪
    @Delete("DELETE FROM demo WHERE id=#{id}")
    boolean deleteById(int id);

    //查
    @Select("SELECT * FROM demo WHERE id=#{id}")
    Demo findById(int id);
    @Select("SELECT * FROM demo WHERE login=#{login} AND password=#{password}")
    Demo findByObject(@Param("login") String login,@Param("password") String password);

    //改,注意:需要指定參數(shù)映射@Param,如不指定,可按下面的方法執(zhí)行
    @Update("UPDATE demo SET name=#{name} WHERE id =#{id}")
    boolean updateById(@Param("name") String name,@Param("id") int id);
    @Update("UPDATE demo SET name=#{name} WHERE id =#{id}")
    boolean update_2ById(Demo demo);


    //批量增
    @InsertProvider(type = LoginProvider.class,method = "insert")
    int insert(@Param("demoList")List<Demo> demoList);

    //批量刪
    @DeleteProvider(type = LoginProvider.class,method = "delete")
    boolean delete(@Param("demoList")List<Demo> demoList);

    //批量查
    @Select("SELECT * FROM demo")
    List<Demo> find();
    @SelectProvider(type = LoginProvider.class,method = "find2")
    List<Demo>find2(@Param("demoList")List<Demo> demoList);


    //批量改
    @UpdateProvider(type = LoginProvider.class,method = "update")
    boolean update(@Param("demoList")List<Demo> demoList);


}

5.創(chuàng)建provider實(shí)現(xiàn)類

為注解@UpdateProvider、@InsertProvider、@DeleteProvider、@SelectProvider返回可執(zhí)行SQL語句,需注意:要添加@Param注解,指定映射參數(shù)

public class LoginProvider {

    public String insert(@Param("demoList")List<Demo> demoList){
        StringBuilder builder=new StringBuilder();
        builder.append("INSERT INTO demo(name,age)VALUES");
        String message="(''{0}'',{1})";
        int i=1;
        for (Demo demo : demoList) {
            String s = MessageFormat.format(message, demo.getName(), demo.getAge());
            builder.append(s);
            if (i==demoList.size()){break;}
            builder.append(",");
            i++;
        }
        return builder.toString();
    }

    public String delete(@Param("demoList")List<Demo> demoList){
        StringBuilder builder=new StringBuilder();
        builder.append("DELETE FROM demo WHERE id IN (");
        int i=1;
        for (Demo demo : demoList) {
            builder.append(demo.getId());
            if (i==demoList.size()){break;}
            builder.append(",");
            i++;
        }
        builder.append(")");
        return builder.toString();
    }

    public String find2(@Param("demoList")List<Demo> demoList){
        StringBuilder builder=new StringBuilder();
        builder.append("SELECT * FROM demo WHERE id IN (");
        int i=1;
        for (Demo demo : demoList) {
            builder.append(demo.getId());
            if (i==demoList.size()){break;}
            builder.append(",");
            i++;
        }
        builder.append(")");
        return builder.toString();
    }

    public String update(@Param("demoList")List<Demo> demoList){
        StringBuilder builder=new StringBuilder();
        builder.append("INSERT INTO demo(id,name,age)VALUES");
        String message="({0},''{1}'',{2})";
        int i=1;
        for (Demo demo : demoList) {
            String s = MessageFormat.format(message, demo.getId(), demo.getName(), demo.getAge());
            builder.append(s);
            if (i==demoList.size()){break;}
            builder.append(",");
            i++;
        }
        builder.append("on duplicate key update id=VALUES(id),age=values(age),name=VALUES(name)");
        return builder.toString();
    }
}

Springboot整合mybatis(注解而且能看明白版本)

Springboot整合Mybatis實(shí)現(xiàn)一個(gè)最基本的增刪改查功能,整合的方式有兩種一種是注解形式的,也就是沒有Mapper.xml文件,還有一種是XML形式的,我推薦的是使用注解形式,為什么呢?因?yàn)楦拥暮喗?,減少不必要的錯(cuò)誤。

1.環(huán)境配置

對于環(huán)境配置我是用了一張表來展示,版本之間差異不大,你可以基于其他版本進(jìn)行測試。

這就是我的基本的環(huán)境。下一步我們一步一步來整合一波

2.整合Mybatis

第一步:數(shù)據(jù)庫新建Person表

這個(gè)表結(jié)構(gòu)很簡單,也就是三個(gè)字段id、name、age。并以id為主鍵且遞增。

第二步:新建Springboot項(xiàng)目

這個(gè)比較簡單,這里先給出一個(gè)最終的目錄結(jié)構(gòu):

第三步:導(dǎo)入相關(guān)依賴

OK,我們只需要加上這些依賴即可。在我們的pom文件。

第四步:更改application.yml配置文件

我們只需要把a(bǔ)pplication.properties文件改為yml格式即可。此時(shí)添加相關(guān)配置

這里的配置有點(diǎn)多,不過還是一個(gè)最基本的配置都在這。

第五步:新建dao包,在dao包下新建Person類

這個(gè)類是和我們數(shù)據(jù)庫中的Person類一一對應(yīng)的。

第六步:新建mapper包,在mapper新建PersonMapper類

在這個(gè)類中,我們實(shí)現(xiàn)基本的增刪改查功能接口:

這就是最基本的一個(gè)增刪改查操作的接口。

第七步:新建service包,在service包創(chuàng)建PersonService接口

第八步:在service包下創(chuàng)建PersonServiceImpl接口實(shí)現(xiàn)類

第九步:編寫controller層

第十步:在啟動(dòng)主類添加掃描器

第十一步:測試

在瀏覽器輸入相應(yīng)的路徑即可。OK。大功告成。只要你按照上面的步驟一步一步來,就一定OK。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Filter中獲取請求體body后再次讀取的問題

    關(guān)于Filter中獲取請求體body后再次讀取的問題

    這篇文章主要介紹了關(guān)于Filter中獲取請求體body后再次讀取的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java hashCode原理以及與equals()區(qū)別聯(lián)系詳解

    Java hashCode原理以及與equals()區(qū)別聯(lián)系詳解

    在 Java 應(yīng)用程序執(zhí)行期間,在同一對象上多次調(diào)用 hashCode 方法時(shí),必須一致地返回相同的整數(shù),前提是對象上 equals 比較中所用的信息沒有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無需保持一致
    2022-11-11
  • SpringMVC基于注解的Controller詳解

    SpringMVC基于注解的Controller詳解

    這篇文章主要介紹了SpringMVC基于注解的Controller詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 任何Bean通過實(shí)現(xiàn)ProxyableBeanAccessor接口即可獲得動(dòng)態(tài)靈活的獲取代理對象或原生對象的能力(最新推薦)

    任何Bean通過實(shí)現(xiàn)ProxyableBeanAccessor接口即可獲得動(dòng)態(tài)靈活的獲取代理對象或原生對象的能力(最新推

    這篇文章主要介紹了任何Bean通過實(shí)現(xiàn)ProxyableBeanAccessor接口即可獲得動(dòng)態(tài)靈活的獲取代理對象或原生對象的能力,通過示例代碼看到,借助ProxyableBeanAccessor接口默認(rèn)實(shí)現(xiàn)的getReal、getProxy、selfAs方法,很靈活的按需獲取代理或非代理對象,需要的朋友可以參考下
    2024-02-02
  • Java 多線程使用要點(diǎn)分析

    Java 多線程使用要點(diǎn)分析

    這篇文章主要介紹了Java 多線程使用要點(diǎn)分析的相關(guān)資料,Java 多線程開發(fā)需要主要的細(xì)節(jié)問題很多,這里就說下,需要的朋友可以參考下
    2016-12-12
  • Java實(shí)現(xiàn)文件上傳到服務(wù)器本地并通過url訪問的方法步驟

    Java實(shí)現(xiàn)文件上傳到服務(wù)器本地并通過url訪問的方法步驟

    最近項(xiàng)目中使用到了文件上傳到服務(wù)器的功能,下面這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)文件上傳到服務(wù)器本地并通過url訪問的方法步驟,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 教你如何使用Java輸出各種形狀

    教你如何使用Java輸出各種形狀

    本文小編將向大家介紹的是如何利用Java輸出各種不同的形狀,本文一共介紹了七種有趣的形狀,感興趣的小伙伴趕快收藏起來吧
    2021-09-09
  • JSP常用七大動(dòng)作指令實(shí)例解析

    JSP常用七大動(dòng)作指令實(shí)例解析

    這篇文章主要介紹了JSP常用七大動(dòng)作指令實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Spring 處理 HTTP 請求參數(shù)注解的操作方法

    Spring 處理 HTTP 請求參數(shù)注解的操作方法

    這篇文章主要介紹了Spring 處理 HTTP 請求參數(shù)注解的操作方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友參考下吧
    2024-04-04
  • 淺談Java中方法參數(shù)傳遞的問題

    淺談Java中方法參數(shù)傳遞的問題

    下面小編就為大家?guī)硪黄獪\談Java中方法參數(shù)傳遞的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

盐池县| 新化县| 荔浦县| 平泉县| 凤城市| 康保县| 天津市| 庐江县| 海城市| 涞源县| 静海县| 加查县| 永城市| 盱眙县| 若羌县| 新野县| 岢岚县| 重庆市| 曲水县| 漳平市| 辽阳市| 云安县| 婺源县| 泰兴市| 夏邑县| 通渭县| 同江市| 长武县| 荆门市| 永平县| 昌邑市| 嘉义县| 陆河县| 阳城县| 盐城市| 来凤县| 吴忠市| 崇礼县| 新沂市| 高陵县| 沾化县|