javascript
Springboot mybatis-plus
1.什么是Springboot
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化Spring應用的創(chuàng)建、運行、調(diào)試、部署等。使用Spring Boot可以做到專注于Spring應用的開發(fā),而無需過多關注XML的配置。Spring Boot使用“習慣優(yōu)于配置”的理念,簡單來說,它提供了一堆依賴打包,并已經(jīng)按照使用習慣解決了依賴問題。使用Spring Boot可以不用或者只需要很少的Spring配置就可以讓企業(yè)項目快速運行起來。
2.SpringBoot的特點
(1) 用來簡化Spring應用的初始搭建以及開發(fā)過程,使用特定的方式來配置
(2)創(chuàng)建獨立的Spring引用程序main方法運行
(3)嵌入的tomcat無需部署war文件
(4)簡化maven配置
(5)自動配置Spring添加對應的功能starter自動化配置
3.使用idea快速搭建springboot工程
1.搭建環(huán)境
(1)jdk1.8
(2)idea 2022.2.2
(3)win11
2.在有網(wǎng)的情況下
?
3.創(chuàng)建一個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;}瀏覽器訪問接口
4.springboot常用配置文件
properties和yml 兩種格式
(2)yml:
server:port: 8888servlet:context-path: /bbb不管使用哪個配置文件,他們的名字必須叫application. 如果上面兩個配置文件同時存在,而且里面有相同的配置。則properties優(yōu)先級高于yml優(yōu)先級。
5.java如何讀取配置文件中的內(nèi)容
1.第一種方式:
使用@ConfigurationProperties獲取配置文件
?
2.第二種方式:使用@Value獲取配置文件--只能讀取基本類型和String類型
@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ù)庫
(1)引入依賴
<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)測試類測試
@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)相關依賴
<?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整合的依賴 啟動依賴--><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接口生成代理實現(xiàn)類
(5)測試
@SpringBootTest class DemoApplicationTests { ?@Autowiredprivate EmpMapper empMapper;@Testvoid contextLoads() {System.out.println(empMapper.findAll());} ? } ?2---springboot裝配原理mybatis-puls整合
2.springboot自動裝配原理
2.1springboot包掃描原理
包建議大家放在主類所在包或者子包。默認包掃描的是主類所在的包以及子包。
主函數(shù)在運行時會加載一個使用@SpringBootApplication標記的類。而該注解是一個復合注解,包含@EnableAutoConfiguration,這個注解開啟了自動配置功能。 該注解也是一個復合注解,包含@AutoConfigurationPackage。 該注解中包含@Import({Registrar.class}),這個注解引入Registrar類。該類中存在registerBeanDefinitions,可以獲取掃描的包名。
如果需要人為修改掃描包的名稱則需要在主類上@ComponentScan(basepackage={"包名"})
2.2 springboot自動裝配原理
思考: 有沒有自己使用DispatcherServlet. 為什么DispatcherServlet能用。
主函數(shù)在運行會執(zhí)行一個使用@SpringbootApplication注解的類,該注解是一個復合注解,包含@EnableAutoConfiguration, 該注解開啟自動配置功能,該注解也是一個復合注解,包含@Import() 該注解需要導入AutoConfigurationImportSelector類。 該類會加載很多自動裝配類,而這些自動裝配類完成相應的自動裝配原理。
3.springboot整合mybatis-plus(MP)
3.1mybatis-plus概述
MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生。
我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。
不能替代mybatis ,以后對于單表操作的所有功能,都可以使用mp完成。但是鏈表操作的功能還得要校驗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)建一個springboot工程并引入相關的依賴
<?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)建實體類
@Data @NoArgsConstructor @AllArgsConstructor public class User {private Long id;private String name;private Integer age;private String email; }(5)創(chuàng)建一個mapper接口
public interface UserMapper extends BaseMapper<User> { }(6)為接口生成代理實現(xiàn)類
@SpringBootApplication @MapperScan(basePackages = "com.sws.mapper") public class DemoApplicationTests {public static void main(String[] args) {SpringApplication.run(DemoApplicationTests.class, args);} ? }(7)測試
@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完成條件查詢
@Testpublic void page2(){QueryWrapper<User> wrapper=new QueryWrapper<>();wrapper.gt("age",18);//gt表示>List<User> list = userMapper.selectList(wrapper);list.forEach(System.out::println);} //分頁查詢@Testpublic void page(){Page<User> page=new Page<>(1,3);//1:當前第幾頁 3:每頁顯示條數(shù)userMapper.selectPage(page,null);//把查詢分頁的結(jié)果封裝到page對象中System.out.println("當前頁的數(shù)據(jù)"+page.getRecords());//獲取當前頁的數(shù)據(jù)System.out.println("當前的頁數(shù):"+page.getPages());System.out.println("所有數(shù)據(jù)日條數(shù):"+page.getTotal());}3.5 聯(lián)表使用mp的分頁對象
@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("當前頁的數(shù)據(jù)"+page.getRecords());//獲取當前頁的數(shù)據(jù)System.out.println("當前的頁數(shù):"+page.getPages());System.out.println("所有數(shù)據(jù)日條數(shù):"+page.getTotal());}3----springboot整合swagger2
3.1 swagger2概述
編寫和維護接口文檔是每個程序員的職責,根據(jù)Swagger2可以快速幫助我們編寫最新的API接口文檔,再也不用擔心開會前仍忙于整理各種資料了,間接提升了團隊開發(fā)的溝通效率。
3.2 常用注解
@Api:修飾整個類,描述Controller的作用 @ApiOperation:描述一個類的一個方法,或者說一個接口 @ApiParam:單個參數(shù)描述 @ApiModel:用對象來接收參數(shù) @ApiModelProperty:用對象接收參數(shù)時,描述對象的一個字段 @ApiImplicitParam:一個請求參數(shù) @ApiImplicitParams:多個請求參數(shù)
3.3為什么用swagger2
為什么要用swagger,我的理由是方便,作為后端開放人員,最煩的事就是自己寫接口文檔和前端交互是不是需要各種參數(shù)很繁瑣,項目集成swagger后就能自動生成接口文檔,做到前端、后端聯(lián)調(diào)接口文檔的及時性和便利性。
1.支持 API 自動生成同步的在線文檔:使用 Swagger 后可以直接通過代碼生成文檔,不再需要自己手動編寫接口文檔了,對程序員來說非常方便。 2.提供 Web 頁面在線測試 API:有文檔還不夠,Swagger 生成的文檔還支持在線測試。參數(shù)和格式都定好了,直接在界面上輸入?yún)?shù)對應的值即可在線測試接口。
3.4如何使用接口文檔swagger2
(1)引入依賴
<!--swagger2依賴--><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)建配置類-swagger2
@Configuration @EnableSwagger2//開啟swagger注解驅(qū)動 public class SwaggerConfig { @Bean //把方法返回的數(shù)據(jù)對象 交于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心理健康測試", "QY163心理健康測試", "1.2.0", "http://www.jd.com",contact, "明哲科技有限公司", "http://www.mingzhe.com", new ArrayList<VendorExtension>());return apiInfo; } } ?(3)訪問swagger在線文檔
http://ip:port/swagger-ui.html路徑
http://ip:port/doc.html (**推薦**)
4---springboot整合定時器-quartz
在線Cron表達式生成器
定時器: 在指定的時間執(zhí)行相應的業(yè)務代碼。
應用場景: 比如: 定時刪除OSS中冗余的文件
三十分鐘未支付---->取消訂單。
定時發(fā)送短信---->11.11====>
4.1配置
(1)引入quartz依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>(2)配置定時器任務
@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)開啟定時器注解驅(qū)動
@SpringBootApplication @MapperScan("com.sws.mapper") @EnableScheduling//開啟定時任務 public class SpringbootMpApplication { ?public static void main(String[] args) {SpringApplication.run(SpringbootMpApplication.class, args);} ? }總結(jié)
以上是生活随笔為你收集整理的Springboot mybatis-plus的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 “ISO C++ 不允许比较指针和
- 下一篇: idea的几个好用快捷键、常用配置(包括