JeeSite框架学习------主子表创建总结

一.主子表的创建

最近几天才接触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>

7. jsp文件创建

这个文件没什么好说的,无非就是js代码和html,以及一些表单的提交,控件的使用

猜你喜欢

转载自blog.csdn.net/Allan_Bst/article/details/76146856