zoukankan      html  css  js  c++  java
  • 在serviceImpl里使用自身的方法

    @Service("tbLeaveRegisterService")
    @Transactional
    public class TbLeaveRegisterServiceImpl extends CommonServiceImpl implements TbLeaveRegisterServiceI {


    @Autowired
    private tbLeaveRegisterService tbLeaveRegisterService;//类似这种情况会如果需要在这个类里使用自身注解的方法,一定要使用this,而不要定性的去用这个类,因为在自身这里注解还没住进去,所以你如果使用了这个将报空指针。

     
    @Autowired
    private TbStudentServiceI tbStudentService;

    另外说一下关于hibernate的几张表关联使用

    先是

     <t:dgCol title="主键"  field="id"  hidden="false"  queryMode="single"  width="120"></t:dgCol>

    <t:dgCol title="班级" align="center" field="depart.departname"  hidden="true" query="false" queryMode="single"  width="80"></t:dgCol>

    一个是主体id 一个是外键id(depart_id)而control需要对分别两个ID赋值并给予不同的modelandvidel。

    /**
    * 请假新增页面跳转
    *
    * @return
    */
    @RequestMapping(params = "goAddLeave")
    public ModelAndView goAddLeave(TbLeaveRegisterEntity tbLeaveRegister, HttpServletRequest req) {
    String studentid = oConvertUtils.getString(req.getParameter("studentid"));//学生id
    TbStudentEntity student=tbStudentService.getEntity(TbStudentEntity.class, studentid);
    /*String departid = oConvertUtils.getString(req.getParameter("departid"));*/
    if (StringUtil.isNotEmpty(tbLeaveRegister.getId())) {
    tbLeaveRegister = tbLeaveRegisterService.getEntity(TbLeaveRegisterEntity.class, tbLeaveRegister.getId());
    req.setAttribute("tbLeaveRegisterPage", tbLeaveRegister);
    }

    /*tbLeaveRegister.setStudent(student);*/
    req.setAttribute("tbStudentPage", student);
    /*String departid = oConvertUtils.getString(student.getDepart().getId());*/
    /*TSDepart depart=systemService.getEntity(TSDepart.class, departid);
    student.setDepart(depart);*/
    return new ModelAndView("com/biber/yxyz/leave/tbLeaveRegister-addLeave");
    }

    /**
    * 添加请假登记表
    *
    * @param ids
    * @return
    */
    @RequestMapping(params = "doAddLeave")
    @ResponseBody
    public AjaxJson doAddLeave(TbLeaveRegisterEntity tbLeaveRegister, HttpServletRequest request) {
    AjaxJson j = new AjaxJson();
    message = "请假登记表添加成功";
    try{
    String studentid = oConvertUtils.getString(request.getParameter("student.id"));//学生id
    String departid = oConvertUtils.getString(request.getParameter("depart.id"));//部门id
    TbStudentEntity student=tbStudentService.getEntity(TbStudentEntity.class, studentid);
    TSDepart depart=systemService.getEntity(TSDepart.class, departid);
    student.setMatter("1");
    TSUser user = ResourceUtil.getSessionUserName();
    tbLeaveRegister.setCreateuser(user.getUserName());
    tbLeaveRegister.setStudent(student);
    tbLeaveRegister.setDepart(depart);
    student.setLeave(tbLeaveRegister);
    tbLeaveRegisterService.save(tbLeaveRegister);
    tbStudentService.saveOrUpdate(student);
    systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);

    }catch(Exception e){
    e.printStackTrace();
    message = "请假登记表添加失败";
    throw new BusinessException(e.getMessage());
    }
    j.setMsg(message);
    return j;
    }

    整个流程差不多是这样。

    实体类

    @JsonIgnore //getList查询转换为列表时处理json转换异常
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "departid")
    public TSDepart getDepart() {
    return depart;
    }

    public void setDepart(TSDepart depart) {
    this.depart = depart;
    }


    @JsonIgnore //getList查询转换为列表时处理json转换异常
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "studentid")
    public TbStudentEntity getStudent() {
    return student;
    }

    public void setStudent(TbStudentEntity student) {
    this.student = student;
    }

    过程中主要name不要错就不会有问题了。

  • 相关阅读:
    Java多线程系列 JUC锁03 公平锁(一)
    Java多线程系列 JUC锁02 互斥锁ReentrantLock
    JDBC课程3--通过ResultSet执行查询操作
    JDBC课程2--实现Statement(用于执行SQL语句)--使用自定义的JDBCTools的工具类静态方法,包括insert/update/delete三合一
    JDBC_通过DriverManager获得数据库连接
    JDBC课程1-实现Driver接口连接mysql数据库、通用的数据库连接方法(使用文件jdbc.properties)
    [终章]进阶20-流程控制结构--if/case/while结构
    MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子
    MySQL进阶18- 存储过程- 创建语句-参数模式(in/out/inout-对应三个例子) -调用语法-delimiter 结束标记'$'- 删除/查看/修改-三个练习
    SQL进阶17-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量
  • 原文地址:https://www.cnblogs.com/mrdoor/p/4699770.html
Copyright © 2011-2022 走看看