公司要求开发个小站,遂写此文
写的框架是lin-cms,该CMS前后端分离,而且于是分为三个人写,一个人改前端,剩下的人写后端
框架的介绍和相关文档在这:https://doc.cms.talelin.com/
后端决定使用spring-boot进行开发,开发工具用的是idea,还是很方便的,识别到porm.xml就可以在右边直接开始构建什么的。
值得注意的是,如果需要使用自己的maven,需要在preferences
->构建、执行、部署
->maven
中进行配置。idea默认使用的是自己的maven。如果需要下载依赖等可以在右边直接下载
项目框架
DO:如果某个类用来表示数据模型,那么该类就是比较单纯的数据容器(Data Object),我们简称
DO
,对应文件夹为model
,使用@TableName("book")
指定表名。Mapper:按照 mybatis 的惯例,有了数据模型以后,我们还需要为它提供相应的
mapper
。对应mapper
文件夹。Service:有了基础 Mapper 以后,我们再为 book 定义相关的业务接口和业务实现。对应
service
文件夹,其中service/impl
为业务实现Controller:接下来,我们需要给 book 创建对应的控制器,并以此对外提供访问接口。对应文件夹
controller
DTO:关于数据传输的数据容器类称之 为
DTO(Data Transfrom Object)
对应dto
vo:对响应体创建成功的响应对象,对应文件夹
vo
具体的目录结构文档如下:https://doc.cms.talelin.com/server/spring-boot/standard.html
框架配置
由于是springboot,所以相对好配置,src/main/resources/application.yml
中进行配置,值得注意的是,下面这个选项,决定了你的部分配置在哪个文件中文件,例如
1 | spring: |
则配置文件为src/main/resources/application-dev.yml
。在application.yml
中,我基本没有进行改变,但在application-dev.yml
中,我对数据库配置和服务端口进行了改变
进行开发
根据需求进行开发,这里主要讲讲mybatis plus和spring boot里的一些注解。
mybatis plus是mybatis的一个增强工具,总的来说还是比较好用的,我也不是很懂开发,所以这玩意的详细介绍就自行百度吧,我只管知道简单用法就行了。
提供接口
首先是提供接口,创建CompanyController.java
,代码如下:
1 |
|
首先是上面的几个springboot的注解。
@RequestMapping("/v1/company")
请求路径
@Validated
校验注解,添加之后可以使用其中的校验注解,如下文的@Positive(message = "{id.positive}") Integer id)
表示对参数id进行校验,若不大于0,则弹出message中的信息,此处的id.positive
是一个占位符,本框架中具体信息在src/main/resources/ValidationMessages.properties
中,可以在其中进行自定义,除了Positive,还有@Negative
、@Email
等校验注释,具体可以自行百度
@GetMapping("/{id}")
GET请求传入路径参数id,除了GET方法,也能有POST方法
提供DO
创建src/main/java/io/github/talelin/latticy/model/CompanyDO.java
,代码如下:
1 |
|
@Data
减少不必要的代码,如setcompanyName
等类似方法
@TableName
指定数据库表名
@EqualsAndHashCode(callSuper = true)
,使用@Data
时就需要加上该注解,提供equal和hashcoden方法。
值得注意的是,由于该类继承了BaseModel
,所以创建表和映射时,需要有BaseModel中的字段,该框架中为createTime
、updataTime
和deleteTime
。与此同时,BaseModel中存在下面的语句
1 |
|
TableId
意思是将某参数指定为表的主键,这里的参数为id,且数据表中id自增。
提供mapper
创建src/main/resources/mapper/CompanyMapper.xml
用来提供映射和实现SQL语句。代码如下:
1 |
|
xml中column
字段表示表中的字段,property
表示DO中对应的变量。注意,变量最好用驼峰写法,否则会出现查询数据为空的情况,只能说十分的诡异,查了一个多小时才查出来是写法的问题,原因未知,所以还是建议大家用驼峰写法
也可以在其中定义一些查询语句,如BookMapper.xml中的
1 | <select id="selectByTitle" resultMap="BaseResultMap"> |
id
,所对应的是src/main/java/io/github/talelin/latticy/mapper
中声明的接口,上面的id对应的是BookMapper.java
中的List<BookDO> selectByTitle(@Param("title") String title);
可以注意到,传入的形式参数为title
,<select>
之间是所要执行的SQL语句
resultMap
,返回的映射所对应的就是上面自己写的BaseResultMap
一般来说想要使用自定义的方法,都需要在Mapper中进行声明。
提供service及实现接口
创建src/main/java/io/github/talelin/latticy/service/CompanyService.java
和src/main/java/io/github/talelin/latticy/service/Impl/CompanyService Impl.java
和常用的接口一样,在service中进行声明,在impl中进行实现。
CompanyServiceImpl.java代码如下:
1 |
|
@Autowired
对类成员变量、方法和构造方法进行标注,完成自动装配工作,我个人的理解就是会自动填充<property name="属性名" value="属性值"/>
,大概相当于set()和get()
由于mybatis plus已经封装了某些简单的查询、插入等功能,所以seslectById不需要在mapper中进行声明和实现。
- 本文作者: Sn1pEr
- 本文链接: https://sn1per-ssd.github.io/2022/08/05/spring后端开发笔记/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!