后端设计框架及思路
小哈项目后端--baron
- 框架介绍
- 工作开始前准备
- 1.设计数据库
- 2.Navicat建库建表
- 3. 使用相关工具(mybatis-generator-gui)快速生成代码(实体类,dao层的接口和xml)
- controller层(接口层)
- service层(业务层)
- dao层(包含Mapper接口和映射XML文件)
框架介绍
后端项目大概分为这么几层model(实体层)、controller(接口层)、service(业务层)、Dao(Dao层有Mapper接口和与之映射的XML文件)。
实体层存放对象实体模板,业务流水:
controller-->service-->dao(dao层接口)--->dao(dao层xml)
- controller拿到前端数据,传给service。
- service经过处理调用dao层下的Mapper接口,从而调用增删改查方法
- 然而Mapper的实现和与之一一对应的映射XML文件有关
上面提到的都会在下面展开细说的。
工作开始前准备
1. 设计数据库
2. Navicat建库建表
3. 使用相关工具(mybatis-generator-gui)快速生成代码(实体类,dao层的接口和xml)
1.设计数据库
根据数据库课程所学习的数据库设计规范去设计就好了,数据库这门课是要好好吃透的,不仅是学sql语句的问题,表和表的对应关系特别重要。
2.Navicat建库建表
下载Navicat软件,黄色或者彩色都可以,然后根据教程操作,很简单的。
Nacicat建库建表教程
3. 使用相关工具(mybatis-generator-gui)快速生成代码(实体类,dao层的接口和xml)
mybatis-generator-gui生成工具GitHub地址
官方使用教程
运行它之后就会出现下面的界面,下边有我打的一些注释
对应着原来项目目录看一下(临时的)
![在这里插入图片描述(https://img-blog.csdnimg.cn/20200330024030768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhb2R1MjMz,size_16,color_FFFFFF,t_70)
项目所在目录↓
选择绝对路径
项目目录结构
到此为止项目便生成好了model、dao层下的Mapper接口文件和映射XML文件。
controller层(接口层)
获取来自前端的数据,然后调用相关service层。
一个简单的接口举例,其实接口注释形式有很多的,可以参考其他各种项目
注释后面method的后面可以改成其他方法,GET,POST,DELETE,PUT都有,然后value后面的就是接口访问地址了。
注意我上面的参数是XiaohaRoom对吧,这就要求前端存入参数的时候必须要个按照XiaohaRoom这个实体里面属性来。↓
如果这个参数不放对象也可以,那就一个一个传入,比如下面的(其他项目)↓
然后要注意非常重要的一点,我们要导入一些工具类
比如 import com.alibaba.fastjson.JSONArray;
要找一些map list string 对象,和 json 互相转化的工具,这样才能和前端沟通↓
针对这个工具(fastjson)给你们几个教程,不太全,百度就行(我也是网上找的,自己找找都有的)
教程1
教程2
这边要多多注意前端给的接口文档,看看他给你什么参数,你要给他返回什么参数,举个例子↓
service层(业务层)
几个简单的service层介绍↓,后续会更新一些复杂的例子。
括号中的参数便是controller层传过来的参数,同样这里return也是返回到上一个controller。
然后这边根据业务需求,进行相关增删改查操作,调用相应的dao层即可,比如看这个例子↓,根据前端给的个人信息(整合到了user对象里传过来了)
然后用这个Dao层中的方法(这个updateByPrimaryKey是用那个工具自动生成默认Mapper接口和XML文件里的方法),直接就可以用了。
我这么说可能有点懵是吧,进入这个方法看一下是怎么回事
- 首先我们把user中的id拿了出来,用这个id去数据库里找到用户所在的哪一行,然后用我们已经有的user信息去更新它。
- 这里便是dao默认就有的方法,看最后一行的updateByPrimaryKey,就是刚才举例用到的。
- 然后 updateByPrimaryKey方法便对应其映射XML中的这一段代码↓
- 标签中间夹着的就是sql语句,这个不难,你们学了之后就知道了,注意看id后面和parameterType,id和上面Mapper中的接口名字是对应的。
- 这些都是最基本的一些常用方法,其实实际开发中都是自己去写一些方法,不过就算没接触过也没事,照葫芦画瓢就完事了。那怎么照葫芦画瓢呢,给你举个例子你就知道了,我们进入dao层吧。
dao层(包含Mapper接口和映射XML文件)
每个实体对应的dao层下文件都是有一个Mapper接口和映射XML文件的
所以都是成对存在的,图中那个MyBatisBaseDao便是刚才上面提到的工具自动生成时会提供的一些默认方法。
假如我们现在想根据用户id来搜索他的关注列表(下面是service层)
但是fans表中还有粉丝(followers),我只想取他的关注(followings)
这时候就需要我们照葫芦画瓢,写自己的dao了,首先是Mapper接口↓
@Param注释中的参数,上接service层传过来的参数id,同时这个参数名特别重要,“user_id” 必须和后面XML文件中的sql中参数名是对应的
下面这个图是上面Mapper接口对应的XML文件,注意看id是和上面的接口名字一样,同样看sql语句中#{user_id},这个就是对应上面传过来的参数。
是不是现在对大概流程有了了解呢?
…(未完待续)
前端接口文档: 前端接口文档(可编辑)
先不管那个全局操作码。
- 有时间去看一下云服务器教程。
阿里云服务器部署教程
b站上的部署教程(关注这个up主)
Tisfy: Nice!,古人云:泥落画梁空,梦想青春语。