基于若依框架(分离版)开发志愿填报指导系统(中)
基于若依框架(分离版)开发高考填报系统经验分享,了解若依框架开发流程,vue组件开发等。
3.使用若依系统工具代码生成功能模块
上篇文章我们已经建立了自己的业务模块,并进行业务模块测试,能够被访问到。下面我们使用若依系统工具中的代码生成功能来生成一个我们自己业务功能。
1.在数据库建立一个用于测试的数据表。
CREATE TABLE `sys_test` (
`test_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`memo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`test_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2.代码生成,点击导入按钮,查询的就是数据库中的数据表。我们选择数据sys_test后点击确定。
可以看到表描述、实体等信息。
点击操作中的编辑功能
进入修改生成配置界面,这里我们可以进行基本信息、字段信息、生成信息的设置。
基本信息修改:根据自己的情况决定修改内容,一般这个信息中实体类名称可能需要进行修改。
字段信息修改:可以设置插入、编辑的字段,以及哪些字段可以作为查询条件以及查询条件的方式,哪些字段在列表中进行显示。作为查询条件的显示类型是文本框还是下拉框等信息。
看看我们这里设置内容:
共三个字段字段描述设置好,这三个字段java类型及属性我们都默认不改变,三个字段在插入的时候都需要保存数据。可编辑的字段就是name、memo。在列表中显示的也是name、memo。只有name作为查询条件,查询方式为模糊查询。显示类型为文本框,当是下拉框的时候可以设置字段类型。字典类型的数据也可进行维护。
生成信息修改:这里需要注意的时候包路径、模块名需要与我们后台设置一致。上级菜单选择自己在菜单管理中设置的菜单名,这里选择高考填报
。
设置好后点击提交,提交后点击预览功能,可以看到前端和后端的代码以及需要添加菜单的sql语句。这个主要是用在后期数据表发生字段的修改了,需要进行局部调整可以选择性的粘贴使用。功能还是不错的。
也可以直接点击生成代码。打开文件夹目录将生成的代码复制到对应前端和后端,并执行添加菜单的sql语句。
vue这个文件夹就是views里文件就是视图文件,粘贴到前端对应位置上。
api文件夹是前端访问后台的方法。粘贴到对应位置上即可。
效果如图所示,增删改查功能都有了。这个环节如果出问题,可以评论区留言。
4.编写高考填报项目业务后台与前端(非自动生成)
1.创建后端接口
创建ApiController接口添加注解@RequestMapping("/api")
@PreAuthorize("@ss.hasPermi('api:GetSchoolbyScore')")
@GetMapping("/GetSchoolbyScore")
public TableDataInfo GetSchoolbyScore(@RequestParam("typeName") String typeName, @RequestParam("year") String year, @RequestParam("minscore") float minscore, @RequestParam("maxscore") float maxscore, @RequestParam("lflag") boolean lflag) {
startPage();
List<Map<String, Object>> maps = new ArrayList<>();
if (maxscore < 160 || maxscore > 750) {
return getDataTable(maps);
}
if (minscore < 160 || minscore > 750) {
return getDataTable(maps);
}
if (year.isEmpty()) {
return getDataTable(maps);
}
if (typeName.isEmpty()) {
return getDataTable(maps);
}
String strWhere = " AND YEAR=" + year + " AND lqtype='" + typeName + "'";
if (lflag) {
strWhere += " AND TBMIN<=" + minscore + " AND TBMAX>=" + minscore;
} else {
strWhere += " AND TBMIN>=" + minscore + " AND TBMIN<=" + maxscore;
}
maps = gkSchoolQingtingService.GetSchoolZYSJByWhere(strWhere);
return getDataTable(maps);
}
这里这段构造查询语句where条件逻辑判断写在Controller合理不,大家评论区留言。
创建后台方法在service中分别创建对应接口与实现类
创建mapper方法使用@Select 进行sql语句的编写,这里的sql语句使用CONCAT(zymc,zydh)
进行字符串拼接。
@Select("<script>select yxmc yxname,yxdh,zymc,CONCAT(zymc,zydh) zyname,zydh, lqpc,lqtype,year,sum(lqrs) value,MAX(TBMAX) tbmax,MIN(TBMIN) tbmin from gk_school_sjtb_zy WHERE 1=1 \n" +
" ${strWhere} " +
"GROUP BY yxmc,yxdh,zymc,zydh,lqpc,lqtype,year </script>")
public List<Map<String, Object>> GetSchoolZYSJByWhere(@Param("strWhere") String strWhere);
由于每个人的项目业务不一样不贴具体代码。
关于若依框架自定义业务页面中的导出,需要建立自定义实体类,并在需要导出的字段上添加@Excel
注解,否则无法导出。
@Data
public class GkSchoolScore extends BaseEntity {
private static final long serialVersionUID=1L;
@Excel(name = "院校名称")
private String yxname;
@Excel(name = "院校代号")
private String yxdh;
@Excel(name = "专业名称")
private String zyname;
@Excel(name = "专业代号")
private String zydh;
@Excel(name = "录取类型")
private String lqtype;
@Excel(name = "录取批次")
private String lqpc;
@Excel(name = "录取最低分")
private int tbmin;
@Excel(name = "录取最高分")
private int tbmax;
@Excel(name = "录取人数")
private int value;
@Excel(name = "招生年")
private String year;
}
关于数据转化,service返回的都是List<Map<String, Object>> 而在导出的时候需要传入实体类,解决List<Map<String, Object>>转化实体类的问题。
maps = gkSchoolQingtingService.GetSchoolZYSJByWhere(strWhere);
JSONArray jsonArray = new JSONArray();
jsonArray.addAll(maps);
List<GkSchoolScore> list = jsonArray.toJavaList(GkSchoolScore.class);
ExcelUtil<GkSchoolScore> util = new ExcelUtil<GkSchoolScore>(GkSchoolScore.class);
return util.exportExcel(list, " " + typeName + "院校" + year + " " + minscore + " -" + maxscore + " 录取情况");
2.编写前端页面
在views中nmgkcx新建文件夹schoolSelect创建schoolSelect\index.vue
在api中创建请求后台js
import request from '@/utils/request'
// 查询蜻蜓志愿的学校信息列表
export function list(query) {
return request({
url: '/api/GetSchoolbyScore',
method: 'get',
params: query
})
}
// 导出学校
export function exportData(query) {
return request({
url: '/api/exportSchoolbyScore',
method: 'get',
params: query
})
}
3.菜单管理:添加菜单,设置一个形象的图标。
4.运行查看结果
下篇文章介绍一下利用若依框架中Echart图表组件实现高考填报项目各高校图表数据。
更多推荐
所有评论(0)