一.主子表的创建
最近几天才接触JeeSite快速开发框架,网上资料也不算太多,刚学有点吃力,渐渐接触多了也就搞懂了,jeesite虽然提供了强大的代码生成器,但初学者不可依赖于此,还是自己写一遍最好,接下来总结一下主子表的创建流程
二..具体创建步骤
1.创建数据表
首先在数据库创建两张表,主表和子表,jeesite说明文档中规定了必要字段,我们在这两个表中创建这些字段,有其他需求继续补充即可:
主表: id编号,create_by创建者,create_date创建日期,update_by更新者,update_date更新日期,remarks备注信息,del_flag删除标记
子表:id编号,主表名_id 业务主表 ,create_by创建者,create_date创建日期,update_by更新者,update_date更新日期,remarks备注信息,del_flag删除标记
2.根据创建的数据表写JavaBean
1>Day2Main.java 主表JavaBean,主子表必须继承DataEntity<Bean>
实现两个构造器,同树形表,设置getter和setter方法
2>子表JavaBean,Day2Child.java 同样继承 DataEntity<Day2Child>,这儿要注意,子表JavaBean默认实现3个构造器 (无参、id、父表JavaBean)
3.创建数据访问层Dao接口创建接口Day2MainDao和 Day2ChildDao接口必须继承CrudDao<Bean>
publicinterfaceDay2ChildDao extendsCrudDao<Day2Child> {
}
4.创建Service业务逻辑层
1>创建Day2Service ,service必须继承 CrudService<主Dao,主Bean>
2> 加上@Service注解,表明这是Servcie
3>Service层依赖Dao,在属性中申明Dao接口
@Autowired
Day2ChildDaoday2ChildDao; //这儿必须是子表的Dao
4>实现servcie中的必要方法
0> Bean get(String) 方法,获取数据
publicDay2Main get(String id){
Day2Main day2Main = super.get(id);
day2Main.setDay2ChildList[A1] (
day2ChildDao.findList(newDay2Child(day2Main)));
return day2Main;
}
1> List<Bean>findList(Bean) 方法,查询列表数据
publicList<Day2Main> findList(Day2Main day2Main){
returnsuper.findList(day2Main); //具体实现调用父类
}
2> Page<主Bean> findPage(Page<主Bean> ,主Bean)
publicPage<Day2Main> findPage(Page<Day2Main> page,
Day2Main day2Main){
returnsuper.findPage(page,day2Main);
}
3> Void save(主Bean) 具体实现数据保存更新的逻辑
@Transactional(readOnly= false)
publicvoidsave(Day2Main day2Main){
super.save(day2Main);
//遍历主bean里面的子表数据
for(Day2Child day2Child:day2Main.getDay2ChildList()) {
//判断子表的id是否为空,为空则表示没数据,跳过此次循环
if(day2Child.getId() == null){
continue;
}
if(Day2Child.DEL_FLAG_NORMAL
.equals(day2Child.getDelFlag())){
if(StringUtils.isBlank(day2Child.getId())){
day2Child.setDay2Main(day2Main);
//数据更新之前预准备,查询是否是新纪录
day2Child.preInsert();
day2ChildDao.insert(day2Child);
}else{
day2Child.preUpdate();
day2ChildDao.update(day2Child);
}
}else{
day2ChildDao.delete(day2Child);
}
}
}
4> Void delete(主Bean) 删除数据
@Transactional(readOnly= false)
publicvoiddelete(Day2Main day2Main){
super.delete(day2Main);
day2ChildDao.delete(newDay2Child(day2Main));
}
5. 创建Controller控制器
1. 新建Day2Controller 继承 BaseController,加上注解@Controller和具体的请求路径
@RequestMapping(value = “${adminPath}/day2/day2Main”)
2. controller依赖service,在属性中加入
@Autowired
public Day2Serviceday2Service;
3. 下面是Controller中的必要方法
1> Bean get(Stringid) 获取单条数据
@ModelAttribute
public DemoDataMain get(@RequestParam(required=false) String id) {
DemoDataMain entity = null;
if (StringUtils.isNotBlank(id)){
entity = demoDataMainService.get(id);
}
if (entity == null){
entity = new DemoDataMain();
}
return entity;
}
2>String list(Bean ,HttpServletRequest,HttpServletReponse,Model) 获取列表
@RequiresPermissions("selfmc:demoDataMain:view")
@RequestMapping(value = {"list", ""}) //列表数据
public String list(DemoDataMain demoDataMain, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<DemoDataMain> page = demoDataMainService.findPage(new Page<DemoDataMain>(request, response), demoDataMain);
model.addAttribute("page", page);
return "modules/selfmc/demoDataMainList";
}
3> String form(Bean ,Model) //表单数据
@RequiresPermissions("selfmc:demoDataMain:view")
@RequestMapping(value = "form")
public String form(DemoDataMain demoDataMain, Model model) {
model.addAttribute("demoDataMain", demoDataMain);
return "modules/selfmc/demoDataMainForm";
}
4> String save(Bean ,Model ,RedirectAttributes) //提交保存数据
@RequiresPermissions("selfmc:demoDataMain:edit")
@RequestMapping(value = "save")
public String save(DemoDataMain demoDataMain, Model model, RedirectAttributes redirectAttributes) {
if (!beanValidator(model, demoDataMain)){
return form(demoDataMain, model);
}
demoDataMainService.save(demoDataMain);
addMessage(redirectAttributes, "保存主从表信息成功");
return "redirect:"+Global.getAdminPath()+"/selfmc/demoDataMain/?repage";
}
5> Stringdelete(Bean ,RedirectAttribute ) //删除数据
@RequiresPermissions("selfmc:demoDataMain:edit")
@RequestMapping(value = "delete")
public String delete(DemoDataMain demoDataMain,
RedirectAttributes redirectAttributes) {
demoDataMainService.delete(demoDataMain);
addMessage(redirectAttributes, "删除主从表信息成功");
return "redirect:"+Global.getAdminPath()+"/selfmc/demoDataMain/?repage";
}
3. 注意事项
1> @RequestMapping的配置
@RequiresPermissions的权限配置
@ModelAttribute的使用
6. 创建Mapper映射文件
<mapper namespace=””> <!--该mapper所对应的Dao文件的路径-->
<sql id = “Bean Columns”>
a.id AS “id”
a.parent_id AS “parent.id” <!--前面是数据库对应的字段名,后面是JavaBean属性名-->
a.area AS “area.id”
a3.name AS “area.name” <!--如果用到区域,部门这种类型的treeselect必须同时配置id和name-->
</sql id=”Bean Joins”>
LEFT JOIN demo_area a3 ON a3.id = a.area <!--引用demo_area表中的数据到area-->
<sql>
</sql>
</mapper>