一、一些准备工作
1-1 配置Maven
1. 下载安装
纯绿色软件,直接解压(配置)就可以使用
下载
配置
- 依赖Java,需要配置 JAVA_HOME
- 设置自身运行环境,需要配置 MAVEN_HOME
- MAVEN_HOME
D:\Program Files\apache-maven-3.8.4
- PATH 添加
%MAVEN_HOME%\bin
2、修改配置文件
- 配置文件位置
D:\Program Files\apache-maven-3.8.4\conf\settings.xml
A、本地仓库配置
<localRepository>D:\maven\repository</localRepository>
B、远程仓库配置
- 配置阿里云镜像仓库
C、将配置文件拷贝到本地仓库同级目录<mirror> <!-- 镜像唯一标识符,用以区分不同的 mirror元素 --> <id>nexus-aliyun</id> <!-- 对那种仓库进行镜像/ 替代那个仓库 --> <mirrorOf>central</mirrorOf> <!-- 镜像名称 --> <name>Nexus aliyun</name> <!-- 镜像URL --> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
3、配置 IDEA 中的 MAVEN
1-2 下载相关插件
Lombok
MyBatisX
二、创建新工程
2-1 配置开发环境等
Spring Initializr
- 服务器URI配置为阿里云:
https://start.aliyun.com
- 工程位置选择好
- 选择
Java
、Maven
- 按照实际开发设置一下
组名
、工件
、软件包名
- 选择
SDK
、Java版本
- 打包为
Jar
包
2-2 配置SpringBoot版本+初始依赖
- 直接 2.4.1 版本
- 选择常用的依赖:
lombok
# 简化Java Bean开发Spring Boot DevTools
# 开发插件,可以设置热重载- 【热重载】项目或者页面修改以后:
Ctrl+F9
- 【热重载】项目或者页面修改以后:
Spring Configuration Processor
Spring Web
MyBatis Plus Framework
# 持久层框架MySQL Driver
# 数据库链接驱动Spring Boot Actuator
#指标监控
三、一些基础配置
3-1 引入阿里巴巴Druid、配置
在 pom.xml
中引入:
<!-- 阿里巴巴德鲁伊 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
application.yml
中简单配置一下:
- 花括号中的内容,根据实际情况配置
spring: datasource: url: jdbc:mysql://localhost:3306/{数据库名}?useSSL=false&characterEncoding=utf8 username: root password: {密码} driver-class-name: com.mysql.jdbc.Driver druid: aop-patterns: com.xueou.boot.* # spring bean 监控 filters: stat,wall,slf4j max-active: 12 stat-view-servlet: enabled: true # 登陆账号密码 login-username: xueoup login-password: {密码} reset-enable: false web-stat-filter: # web监控 enabled: true url-pattern: /* exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' filter: stat: #sql监控 # 慢查询时间阈值 slow-sql-millis: 1000 logSlowSql: true enabled: true wall: #防火墙 enabled: true config: drop-table-allow: false
3-2 配置使用MyBatis-Plus开发Controller
com.xueoup.boot
下新建下列包:bean
mapper
service
service.impl
配置包扫描:
com.xueoup.boot/MyApplication.java
@MapperScan("com.xueou.boot.mapper") @ServletComponentScan(basePackages = {"com.xueou.boot"}) @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(CompApplication.class, args); } }
新建JavaBean
- (
bean/Stu.java
)@Data @ToString @AllArgsConstructor @NoArgsConstructor @TableName("stus") public class Stu { @TableId(type = IdType.AUTO) private int id; private String name; private String gender; private String stuId; @TableField("class_name") private String cls; private String phone; private String teacher; private String major; // 宿舍 private String dorm=""; }
新建Mapper
- (
mapper/StuMapper.java
)public interface StuMapper extends BaseMapper<Stu> { }
新建Service
- (
service/StuService.java
)public interface StuService extends IService<Stu> { List<Stu> getByClass(String className); List<Stu> queryByKeyword(String keyword); }
新建ServiceImpl
- (
service/impl/StuServiceImpl.java
)
一定不要忘了@Service
注解@Service public class StuServiceImpl extends ServiceImpl<StuMapper, Stu> implements StuService { @Override public List<Stu> getByClass(String className) { if("all".equals(className)){ return list(); } QueryWrapper<Stu> wrapper = new QueryWrapper<>(); wrapper.eq("class_name", className); wrapper.orderByAsc("name"); return list(wrapper); } @Override public List<Stu> queryByKeyword(String keyword) { QueryWrapper<Stu> wrapper = new QueryWrapper<>(); String[] keys = keyword.split("\\s+"); for (String key: keys) { wrapper.or().like("name", key).or().like("stu_id", key); wrapper.or().like("teacher", key); } wrapper.orderByDesc("name"); return list(wrapper); } }
持久层的使用
1、Test
类中:AutoWired
注解
@SpringBootTest
class StuApplicationTests {
@Autowired
StuService stuService;
@DisplayName("这是一个简单的测试:")
@Test
void contextLoads() {
List<Stu> lst = stuService.list();
System.out.println(lst);
}
}
2、Controller
中:Resource
注解
@RestController
public class StuController {
@Resource
StuService stuService;
@GetMapping("/stus/{class}")
public Map<String, Object> getByClassName(@PathVariable("class") String className){
Map<String, Object> map = new HashMap<>();
String[] c = {"xxxxxx","就不告诉你~"};
List<Object> classes = Arrays.asList(c);
if(className.isEmpty()){
map.put("states", 500);
map.put("msg", "班级为空");
}
else if(classes.contains(className)){
map.put("states", 200);
map.put("msg", "获取成功");
List<Stu> stus = stuService.getByClass(className);
map.put("data", stus);
}else{
map.put("states", 500);
map.put("msg", "班级名称错误");
}
return map;
}
@GetMapping("/stus-all")
public List<Stu> getAll(){
return stuService.list();
}
}