1.数据库设计
实现oracle,mysql不同数据库链接不同的数据类型
2.在跳转到添加页面的时候,去数据库查询parent_id=0的数据,存入modelMap中带入add.html页面
@GetMapping("/add")
public String add(ModelMap mmap) { //查询数据库类型,返回oracle和mysql等数据库 List<DatabaseVo> databaseVo = matedataService.selectDatabases(); mmap.addAttribute("databases",databaseVo);return "/add";
}
返回的数据使用自定义DatabaseVo来接收;
public class DatabaseVo implements Serializable {
private static final long serialVersionUID = 1L; //编号 private Long id; //数据库名称 private String name;
}
3.跳转到add.html页面
<div class="form-group">
<label class="col-sm-3 control-label">数据库类型:</label>
<div class="col-sm-8">
<select class="form-control m-b" id="database" th:name="databaseId">
<option value="">请选择数据库</option>
<option th:each="database : ${databases}" th:value="${database.id}" th:text="${database.name}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">数据项类型:</label>
<div class="col-sm-8">
<select name="type" id="types" class="form-control m-b" >
</select>
</div>
</div>
4.js二级联动代码实现
$("#database").change(function () {
var databaseId = $("#database").val(); if (databaseId == null) { return; } $.ajax({ cache: true, type: "get", url: prefix + "/getTypeByDataBaseId", data: {"databaseId": databaseId}, success: function (data) { console.log(data); var types = $("#types").empty(); for (var i = 0; i < data.data.length; i++) { types.append("<option value = '"+ data.data[i].name + "'>" + data.data[i].name + "</option>"); } } }) })
5.根据数据库id去查询旗下的数据类型,返回的数据跟数据库一致
@GetMapping("/getTypeByDataBaseId")
@ResponseBody
public AjaxResult getTypeByDataBaseId (@RequestParam("databaseId") Long id) { //根据数据库Id查询对应的数据类型 List<TypeVo> typeVo = matedataService.selectTypesByDatabaseId(id); if (typeVo == null) { throw new RuntimeException("数据为空!"); } return AjaxResult.success(typeVo); }
6.实现效果
======================================================================================
======================================================================================
7.总结
基本上的实现思路就是如此,数据库设计因人而异,有些细节可能大家的不一样,调整一下即可。