springboot实践初试
整合第三方技术
学会整合第三方技术的思想
整合Junit
- 名称:
- 类型:测试注解类
- 位置在测试类上方
- 设置Junit加载的Springboot启动类
- 代码示例
@SpringBootTest //测试类注解
class SpringbootJunitApplicationTests {
@Autowired //自动装配对象
private BookDao bookDao;//添加测试对象
@Test
void contextLoads() {
bookDao.save();
System.out.println("test.......");
}
}
整合mybatis
在idea工程创建的时候勾选mybatis技术,也就是导入mybatis对应的依赖
yml文件中配置数据库连接
-
datasource: driver-class-name:com.mysql.jdbc.Driver url:jdbc:mysql://localhost:3308/数据库名称 usrname:root passworld:root
数据库SQL映射需要添加@Mapper被容器识别到
如果出现server time zone value 的错误需要设置如下,问题得到解决
datasource:
driver-class-name:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3308/数据库名称?serverTimezone=UTC
usrname:root
passworld:root
(推荐)使用阿里巴巴的Druid配置,添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
配置yml文件(druid 专业配置数据源)
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
项目开发案例
案例分析
- 实体类开发:使用lombok快速制作
- Dao开发:整合mybatisplus,制作数据层测试类
- Service开发:基于mybatisplus进行增量开发,制作业务层测试类
- controller开发:基于restful开发,使用postman进行接口测试
- controller开发:前后端开发协议制作
- 页面开发:基于Vue+elementUI制作,前后端联调,页面处理数据,页面消息处理
- 列表、新增、修改、删除
- 分页、查询
- 项目异常处理
- 按条查询
实体类开发
- 声明属性,使用lombok快速开发
- lombok的自动生成get 、set,toString等方法
- 导入lombok坐标依赖
代码实现
```java
import lombok.Data;
@Data
public class Book {
private Integer id;
private String type;
private String name;
private String description;
}
```
数据层开发
使用整合mybatisplus自动生成Sql操作方法
package com.itheima.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.domain.Book;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BookDao extends BaseMapper<Book> { //mp提供基础泛型,只需要声明操作类型就行
}
此时可以看到BookDao中的方法如下(ctrl+F12)
开启MybatisPlus的日志记录
global-config:
db-config:
table-prefix: tbl_
id-type: auto
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpll //开启MP的数据库日志
MP的分页拦截器
@Configuration //spring的配置信息
public class MPConfig {
@Bean//被spring容器管理
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
查询功能
String name = "java";
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
lqw.like(name != null,Book::getName,name); //模糊查询(排除把null当做字符串)
bookDao.selectList(lqw); //查询全部记录
Service开发
声明接口
package com.itheima.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.itheima.domain.Book;
import java.util.List;
public interface BookService {
Boolean save(Book book);
Boolean update(Book book);
Boolean delete(Integer id);
Book getById(Integer id);
List<Book> getAll();
IPage<Book> getPage(int currentPage,int pageSize);
}
在service.impl包下实现接口
public class BookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService { //MP提供的接口
@Autowired
private BookDao bookDao;
@Override
public boolean saveBook(Book book) {
return bookDao.insert(book) > 0;
}
@Override
public boolean modify(Book book) {
return bookDao.updateById(book) > 0;
}
@Override
public boolean delete(Integer id) {
return bookDao.deleteById(id) > 0;
}
@Override
public IPage<Book> getPage(int currentPage, int pageSize) {
IPage page = new Page(currentPage,pageSize);
bookDao.selectPage(page,null);
return page;
}
}
表现层数据一致性
让数据传递给前端有统一的格式。
package com.itheima.controller.utils;
import lombok.Data;
@Data
public class R {
private Boolean flag;
private Object data;
private String msg;
public R(){}
public R(Boolean flag){
this.flag = flag;
}
public R(Boolean flag,Object data){
this.flag = flag;
this.data = data;
}
public R(Boolean flag,String msg){
this.flag = flag;
this.msg = msg;
}
public R(String msg){
this.flag = false;
this.msg = msg;
}
}
通过这次梳理了软件开发的流程,对项目从零开始有一个感知的概括!
一个简单的SSM案例
链接: https://pan.baidu.com/s/1CT1HJO60D_tFEXk6-r5a_A 提取码: an46
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!