日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Springboot​ mybatis-plus

發(fā)布時(shí)間:2024/1/8 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Springboot​ mybatis-plus 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.什么是Springboot

Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化Spring應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等。使用Spring Boot可以做到專(zhuān)注于Spring應(yīng)用的開(kāi)發(fā),而無(wú)需過(guò)多關(guān)注XML的配置。Spring Boot使用“習(xí)慣優(yōu)于配置”的理念,簡(jiǎn)單來(lái)說(shuō),它提供了一堆依賴(lài)打包,并已經(jīng)按照使用習(xí)慣解決了依賴(lài)問(wèn)題。使用Spring Boot可以不用或者只需要很少的Spring配置就可以讓企業(yè)項(xiàng)目快速運(yùn)行起來(lái)。

2.SpringBoot的特點(diǎn)

(1) 用來(lái)簡(jiǎn)化Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,使用特定的方式來(lái)配置

(2)創(chuàng)建獨(dú)立的Spring引用程序main方法運(yùn)行

(3)嵌入的tomcat無(wú)需部署war文件

(4)簡(jiǎn)化maven配置

(5)自動(dòng)配置Spring添加對(duì)應(yīng)的功能starter自動(dòng)化配置

3.使用idea快速搭建springboot工程

1.搭建環(huán)境

(1)jdk1.8

(2)idea 2022.2.2

(3)win11

2.在有網(wǎng)的情況下

?

3.創(chuàng)建一個(gè)controller

@RestController public class springController {@GetMapping("index")public Map<String, Object> spring() {Map<String, Object> map = new HashMap<>();map.put("name", "張明喆");map.put("age", 20);return map;}

瀏覽器訪問(wèn)接口

4.springboot常用配置文件

  • properties和yml 兩種格式

  • (1)properties: #修改端口號(hào) server.port=9999 #修改訪問(wèn)路徑 server.servlet.context-path=/aaa

    (2)yml:

    server:port: 8888servlet:context-path: /bbb

    不管使用哪個(gè)配置文件,他們的名字必須叫application. 如果上面兩個(gè)配置文件同時(shí)存在,而且里面有相同的配置。則properties優(yōu)先級(jí)高于yml優(yōu)先級(jí)。

    5.java如何讀取配置文件中的內(nèi)容

    1.第一種方式:

    使用@ConfigurationProperties獲取配置文件

  • @Data @Component @ConfigurationProperties(prefix = "student") public class Student {private String name;private Integer age;private String address;private List<String> hobby;private Map<String,Object> map; }

    ?

    2.第二種方式:使用@Value獲取配置文件--只能讀取基本類(lèi)型和String類(lèi)型

    @Value("${student.name}")private String name;@GetMapping("n")public String m() {return name;}@Value("${student.age}")private Integer age;@GetMapping("a")public Integer a() {return age;}

    6. springboot整合數(shù)據(jù)源

    連接數(shù)據(jù)庫(kù)

    (1)引入依賴(lài)

    <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>

    (2)配置數(shù)據(jù)源信息

    spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.url=jdbc:mysql://localhost:3306/aaa spring.datasource.druid.username=root spring.datasource.druid.password=17637422471 spring.datasource.druid.initial-size=5

    (3)測(cè)試類(lèi)測(cè)試

    @SpringBootTest class Springbootqy163ApplicationTests { @Autowired private DataSource dataSource;@Testvoid contextLoads() throws SQLException {Connection connection = dataSource.getConnection();System.out.println(connection);System.out.println(dataSource);} } ?

    7.springboot整合mybatis

    (1)相關(guān)依賴(lài)

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.10</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.sws</groupId><artifactId>qy163-springboot02</artifactId><version>0.0.1-SNAPSHOT</version><name>qy163-springboot02</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> ?<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!--mybatis和springboot整合的依賴(lài) 啟動(dòng)依賴(lài)--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version></dependency> ?<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies> ?<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build> ? </project>

    (2)修改配置文件

    #數(shù)據(jù)源 spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.username=root spring.datasource.druid.password=17637422471 spring.datasource.druid.url=jdbc:mysql://localhost:3306/aaa ? #指定映射文件所在的路徑-- mybatis.mapper-locations=classpath:mapper/*.xml ? #mybatis日志文件 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

    (3)mapper接口

    public interface EmpMapper {public List<Emp> findAll(); }

    (4)為mapper接口生成代理實(shí)現(xiàn)類(lèi)

    (5)測(cè)試

    @SpringBootTest class DemoApplicationTests { ?@Autowiredprivate EmpMapper empMapper;@Testvoid contextLoads() {System.out.println(empMapper.findAll());} ? } ?

    2---springboot裝配原理mybatis-puls整合

    2.springboot自動(dòng)裝配原理

    2.1springboot包掃描原理

    包建議大家放在主類(lèi)所在包或者子包。默認(rèn)包掃描的是主類(lèi)所在的包以及子包。

    主函數(shù)在運(yùn)行時(shí)會(huì)加載一個(gè)使用@SpringBootApplication標(biāo)記的類(lèi)。而該注解是一個(gè)復(fù)合注解,包含@EnableAutoConfiguration,這個(gè)注解開(kāi)啟了自動(dòng)配置功能。 該注解也是一個(gè)復(fù)合注解,包含@AutoConfigurationPackage。 該注解中包含@Import({Registrar.class}),這個(gè)注解引入Registrar類(lèi)。該類(lèi)中存在registerBeanDefinitions,可以獲取掃描的包名。

    如果需要人為修改掃描包的名稱(chēng)則需要在主類(lèi)上@ComponentScan(basepackage={"包名"})

    2.2 springboot自動(dòng)裝配原理

    思考: 有沒(méi)有自己使用DispatcherServlet. 為什么DispatcherServlet能用。

    主函數(shù)在運(yùn)行會(huì)執(zhí)行一個(gè)使用@SpringbootApplication注解的類(lèi),該注解是一個(gè)復(fù)合注解,包含@EnableAutoConfiguration, 該注解開(kāi)啟自動(dòng)配置功能,該注解也是一個(gè)復(fù)合注解,包含@Import() 該注解需要導(dǎo)入AutoConfigurationImportSelector類(lèi)。 該類(lèi)會(huì)加載很多自動(dòng)裝配類(lèi),而這些自動(dòng)裝配類(lèi)完成相應(yīng)的自動(dòng)裝配原理。

    3.springboot整合mybatis-plus(MP)

    3.1mybatis-plus概述

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

    我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。

    不能替代mybatis ,以后對(duì)于單表操作的所有功能,都可以使用mp完成。但是鏈表操作的功能還得要校驗(yàn)mybatis.

    3.2如何使用mybatis-plus(MP)

    (1)創(chuàng)建表并加入數(shù)據(jù)

    DELETE FROM user; ? INSERT INTO user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com');

    (2)創(chuàng)建一個(gè)springboot工程并引入相關(guān)的依賴(lài)

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.10</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.sws</groupId><artifactId>qy163-springboot02</artifactId><version>0.0.1-SNAPSHOT</version><name>qy163-springboot02</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> ?<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version></dependency> ?<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies> ?<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build> ? </project>

    (3)配置數(shù)據(jù)源

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=17637422471 spring.datasource.url=jdbc:mysql:///aaa

    (4)創(chuàng)建實(shí)體類(lèi)

    @Data @NoArgsConstructor @AllArgsConstructor public class User {private Long id;private String name;private Integer age;private String email; }

    (5)創(chuàng)建一個(gè)mapper接口

    public interface UserMapper extends BaseMapper<User> { }

    (6)為接口生成代理實(shí)現(xiàn)類(lèi)

    @SpringBootApplication @MapperScan(basePackages = "com.sws.mapper") public class DemoApplicationTests {public static void main(String[] args) {SpringApplication.run(DemoApplicationTests.class, args);} ? }

    (7)測(cè)試

    @SpringBootTest class DemoApplicationTests { ?@Autowiredprivate UserMapper userMapper;@Testvoid test() {User user = userMapper.selectById(8);System.out.println(user);} ? }

    3.3 使用mp完成CRUD

    @SpringBootTest class DemoApplicationTests {@Autowiredprivate UserMapper userMapper; ? @Test public void ?select(){QueryWrapper<User> wrapper=new QueryWrapper<>();wrapper.likeRight("name","_明");wrapper.or();wrapper.between("age",18,24);List<User> list = userMapper.selectList(wrapper);System.out.println(list); }@Testpublic void deleteById(){int i = userMapper.deleteById(4);System.out.println(i);} @Test public void delete(){List<Integer> list=new ArrayList<>();list.add(2);list.add(3);userMapper.deleteBatchIds(list); ? }@Testpublic void ?insert(){User user = new User(9L,"張明喆",20,"111@@qq.com");int insert = userMapper.insert(user);System.out.println(insert); ?} ?@Testpublic void update(){User user = new User(8L,"張明喆1",22,"111");user.setId(7L);userMapper.updateById(user);} } ?

    3.4 使用mp完成條件查詢(xún)

    @Testpublic void page2(){QueryWrapper<User> wrapper=new QueryWrapper<>();wrapper.gt("age",18);//gt表示>List<User> list = userMapper.selectList(wrapper);list.forEach(System.out::println);} //分頁(yè)查詢(xún)@Testpublic void page(){Page<User> page=new Page<>(1,3);//1:當(dāng)前第幾頁(yè) 3:每頁(yè)顯示條數(shù)userMapper.selectPage(page,null);//把查詢(xún)分頁(yè)的結(jié)果封裝到page對(duì)象中System.out.println("當(dāng)前頁(yè)的數(shù)據(jù)"+page.getRecords());//獲取當(dāng)前頁(yè)的數(shù)據(jù)System.out.println("當(dāng)前的頁(yè)數(shù):"+page.getPages());System.out.println("所有數(shù)據(jù)日條數(shù):"+page.getTotal());}

    3.5 聯(lián)表使用mp的分頁(yè)對(duì)象

    @Autowiredprivate EmpMapper empMapper;@Testpublic ?void page2(){Page<Emp> page=new Page<>(1,3);QueryWrapper<Emp> wrapper=new QueryWrapper<>();wrapper.gt("sal",1000);empMapper.findPage(page,wrapper);System.out.println("當(dāng)前頁(yè)的數(shù)據(jù)"+page.getRecords());//獲取當(dāng)前頁(yè)的數(shù)據(jù)System.out.println("當(dāng)前的頁(yè)數(shù):"+page.getPages());System.out.println("所有數(shù)據(jù)日條數(shù):"+page.getTotal());}

    3----springboot整合swagger2

    3.1 swagger2概述

    編寫(xiě)和維護(hù)接口文檔是每個(gè)程序員的職責(zé),根據(jù)Swagger2可以快速幫助我們編寫(xiě)最新的API接口文檔,再也不用擔(dān)心開(kāi)會(huì)前仍忙于整理各種資料了,間接提升了團(tuán)隊(duì)開(kāi)發(fā)的溝通效率。

    3.2 常用注解

    @Api:修飾整個(gè)類(lèi),描述Controller的作用 @ApiOperation:描述一個(gè)類(lèi)的一個(gè)方法,或者說(shuō)一個(gè)接口 @ApiParam:單個(gè)參數(shù)描述 @ApiModel:用對(duì)象來(lái)接收參數(shù) @ApiModelProperty:用對(duì)象接收參數(shù)時(shí),描述對(duì)象的一個(gè)字段 @ApiImplicitParam:一個(gè)請(qǐng)求參數(shù) @ApiImplicitParams:多個(gè)請(qǐng)求參數(shù)

    3.3為什么用swagger2

    為什么要用swagger,我的理由是方便,作為后端開(kāi)放人員,最煩的事就是自己寫(xiě)接口文檔和前端交互是不是需要各種參數(shù)很繁瑣,項(xiàng)目集成swagger后就能自動(dòng)生成接口文檔,做到前端、后端聯(lián)調(diào)接口文檔的及時(shí)性和便利性。

    1.支持 API 自動(dòng)生成同步的在線文檔:使用 Swagger 后可以直接通過(guò)代碼生成文檔,不再需要自己手動(dòng)編寫(xiě)接口文檔了,對(duì)程序員來(lái)說(shuō)非常方便。 2.提供 Web 頁(yè)面在線測(cè)試 API:有文檔還不夠,Swagger 生成的文檔還支持在線測(cè)試。參數(shù)和格式都定好了,直接在界面上輸入?yún)?shù)對(duì)應(yīng)的值即可在線測(cè)試接口。

    3.4如何使用接口文檔swagger2

    (1)引入依賴(lài)

    <!--swagger2依賴(lài)--><dependency><groupId>com.spring4all</groupId><artifactId>swagger-spring-boot-starter</artifactId><version>1.9.1.RELEASE</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.7.8</version></dependency>

    (2)創(chuàng)建配置類(lèi)-swagger2

    @Configuration @EnableSwagger2//開(kāi)啟swagger注解驅(qū)動(dòng) public class SwaggerConfig { @Bean //把方法返回的數(shù)據(jù)對(duì)象 交于spring容器管理public Docket docket(){Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("QY163").apiInfo(getInfo()).select().apis(RequestHandlerSelectors.basePackage("com.sws.controller")).build();return docket; } private ApiInfo getInfo(){Contact contact = new Contact("張明喆", "http://www.baidu.com", "110@qq.com");ApiInfo apiInfo = new ApiInfo("QY163心理健康測(cè)試", "QY163心理健康測(cè)試", "1.2.0", "http://www.jd.com",contact, "明哲科技有限公司", "http://www.mingzhe.com", new ArrayList<VendorExtension>());return apiInfo; } } ?

    (3)訪問(wèn)swagger在線文檔

    http://ip:port/swagger-ui.html路徑

    http://ip:port/doc.html (**推薦**)

    4---springboot整合定時(shí)器-quartz

    在線Cron表達(dá)式生成器

    定時(shí)器: 在指定的時(shí)間執(zhí)行相應(yīng)的業(yè)務(wù)代碼。

    應(yīng)用場(chǎng)景: 比如: 定時(shí)刪除OSS中冗余的文件

    三十分鐘未支付---->取消訂單。

    定時(shí)發(fā)送短信---->11.11====>

    4.1配置

    (1)引入quartz依賴(lài)

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>

    (2)配置定時(shí)器任務(wù)

    @Component//交給spring容器 public class QuarzConfig {@Scheduled(cron = "0/5 * * * * ? ")//每5秒觸發(fā)一次public void show(){System.out.println("111");}@Autowiredprivate Stundent1Mapper student1Mapper;@@Scheduled(cron = "0 0/5 * * * ?")//每5分鐘觸發(fā)一次public void show(){List<Stundent1> student1 = student1Mapper.selectList(null);System.out.println(student1);} }

    (3)開(kāi)啟定時(shí)器注解驅(qū)動(dòng)

    @SpringBootApplication @MapperScan("com.sws.mapper") @EnableScheduling//開(kāi)啟定時(shí)任務(wù) public class SpringbootMpApplication { ?public static void main(String[] args) {SpringApplication.run(SpringbootMpApplication.class, args);} ? }

    總結(jié)

    以上是生活随笔為你收集整理的Springboot​ mybatis-plus的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美xxxxav| 免费视频网站在线观看入口 | 国产福利一区二区三区在线观看 | 五月精品 | 韩国在线不卡 | 国产,日韩,欧美 | 免费欧美一级 | 国产精品久久久久久亚洲色 | 亚洲乱码日产精品bd在线观看 | 国产一区二区三区高清 | 超级碰在线视频 | 永久免费看成人av的动态图 | 尤物毛片 | 亚洲另类天堂 | 日韩欧美国产片 | 看日本黄色录像 | 久久综合中文 | 高清一区二区视频 | 吻胸摸激情床激烈视频 | 国产污视频在线 | 一女二男一黄一片 | 免费精品在线视频 | 99久久国| 一级黄色大片视频 | 97超碰人人澡 | 日韩一中文字幕 | 少妇高潮惨叫久久久久 | 超碰人人干人人 | 久久成年视频 | 爱操影院| 久操精品视频 | 黄色片免费视频 | 欧美一a一片一级一片 | h片在线观看 | 国产亚洲一区在线 | 欧美 亚洲 另类 偷偷 自拍 | 97在线免费| 国产欧美日韩精品区一区二污污污 | 少妇一级淫片免费观看 | 天天射天天草 | 亚洲国产成人精品激情在线 | 午夜福利123 | 蜜桃视频免费网站 | 五月天综合社区 | 天天操天天操天天干 | 大黄网站在线观看 | jlzzzjlzzz国产免费观看 | 亚洲欧美一区二区三区不卡 | 香蕉小视频| 成人免费视频观看 | 制服丝袜手机在线 | 成人必看www.| 亚洲一区二区人妻 | 黄色性网站 | 91精品国产自产91精品 | 成年人免费在线观看视频网站 | 在线观看一区 | 丁香久久综合 | 国产福利免费在线观看 | 日韩一区二区三区免费在线观看 | 亚洲色图图片区 | 国产第一色 | 91国偷自产一区二区三区女王 | 国产奶水涨喷在线播放 | 成年网站| 麻豆传谋在线观看免费mv | 人妻无码一区二区三区久久99 | 国产一区二区三区免费播放 | 人妻精品久久久久中文字幕 | 怡红院一区二区 | 日本一区二区免费电影 | 成人在线观看网 | 在线播放你懂得 | 爱操视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 99热自拍偷拍 | 羞羞的网站在线观看 | 欧美精品在欧美一区二区少妇 | 国产精品乱码妇女bbbb | 黄色片网站在线播放 | 小蝌蚪av| 久久精品国产99国产 | 少妇被躁爽到高潮无码文 | 成人免费看视频 | 葵司ssni-879在线播放 | 天天国产视频 | 亚洲一区二区三区加勒比 | 国产精品27p| 国产大片一区二区 | 综合久久久 | 第四色男人天堂 | 国产视频污在线观看 | 欧美一级网站 | 日本中文在线观看 | 久久久精品影视 | 99久久免费看精品国产一区 | 国产操视频| 国产麻豆xxxvideo实拍 | 久久精品视频偷拍 |