若依生成代码没有部门ID

若依生成代码没有部门ID

针对若依生成的代码中新增没有新增人员和部门ID,修改没有修改人员
在controller中做的修改,针对新生成的代码起作用, 修改controller.java.vm文件,使用反射实体类,并且向上查找其父类,直到找到对应的属性.
请注意:若是继承存在多层的情况下,请慎用,本方法会一直向上查找

四处修改
1.里插入图片描述](https://img-blog.csdnimg.cn/direct/51d32501396c4fc0a458a089f30df847.png)在这里插入图片描述

2.在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 修改后
package ${packageName}.controller;

import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;

import java.lang.reflect.Field;

import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
import com.ruoyi.common.utils.poi.ExcelUtil;
#if($table.crud || $table.sub)
import com.ruoyi.common.core.page.TableDataInfo;
#elseif($table.tree)
#end

/**
 * ${functionName}Controller
 *
 * @author ${author}
 * @date ${datetime}
 */
@RestController
@RequestMapping("/${moduleName}/${businessName}")
public class ${ClassName}Controller extends BaseController {
    @Autowired
    private I${ClassName}Service ${className}Service;

/**
 * 查询${functionName}列表
 */
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
@GetMapping("/list")
    #if($table.crud || $table.sub)
    public TableDataInfo list(${ClassName} ${className}) {
        startPage();
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
        return getDataTable(list);
    }
    #elseif($table.tree)
        public AjaxResult list(${ClassName} ${className}) {
            List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
            return success(list);
        }
    #end

    /**
     * 导出${functionName}列表
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
    @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ${ClassName} ${className}) {
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}. class);
        util.exportExcel(response, list, "${functionName}数据");
    }

    /**
     * 获取${functionName}详细信息
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
    @GetMapping(value = "/{${pkColumn.javaField}}")
    public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
        return success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
    }

    /**
     * 新增${functionName}
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
    @Log(title = "${functionName}", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ${ClassName} ${className}) {
        setFieldValueIfExists(${className}, "deptId", getDeptId());
        setFieldValueIfExists(${className}, "createBy", getUsername());
        return toAjax(${className}Service.insert${ClassName}(${className}));
    }

    /**
     * 修改${functionName}
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
    @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ${ClassName} ${className}) {
        setFieldValueIfExists(${className}, "updateBy", getUsername());
        return toAjax(${className}Service.update${ClassName}(${className}));
    }

    /**
     * 删除${functionName}
     */
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
    @Log(title = "${functionName}", businessType = BusinessType.DELETE)
    @DeleteMapping("/{${pkColumn.javaField}s}")
    public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
        return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s));
    }

    /**
         * 在类或其父类中寻找指定的私有字段,并为其赋值。
         *
         * @param obj       包含字段的对象实例
         * @param fieldName 字段名称
         * @param value     要赋的值
         */
    public static void setFieldValueIfExists(Object obj, String fieldName, Object value) {
        Class<?> clazz = obj.getClass(); // 获取对象的类对象
        while (clazz != null && clazz != Object.class) { // 遍历类及其父类直到Object类
            try {
                // 尝试获取字段的Field对象
                Field field = clazz.getDeclaredField(fieldName);
                // 确保可以访问私有字段
                field.setAccessible(true);
                // 为字段赋值
                field.set(obj, value);
                return; // 赋值成功,退出循环
            } catch (NoSuchFieldException e) {
                // 如果当前类中没有找到字段,继续检查父类
            } catch (IllegalAccessException e) {

            }
            clazz = clazz.getSuperclass(); // 移动到父类
        }
    }
}

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
若依代码生成器默认生成代码只包含单表操作,如果需要进行多表关联查询,需要手动编写SQL语句,并在生成代码中进行调用。 以下是一个简单的示例: 1. 假设我们有两个表,一个是用户表(sys_user),包含用户的基本信息;另一个是部门表(sys_dept),包含部门的基本信息。这两个表可以通过user_dept_id字段进行关联。 2. 在若依代码生成器中,选择“高级模式”,输入SQL语句如下: ```sql SELECT u.*, d.dept_name FROM sys_user u LEFT JOIN sys_dept d ON u.user_dept_id = d.dept_id ``` 3. 点击“生成代码”,若依代码生成器会根据SQL语句自动生成相关代码,包括实体类、DAO、Service、Controller等。 4. 在生成代码中,可以通过调用DAO中的自定义方法进行多表关联查询。例如,在UserController中新增一个方法: ```java @GetMapping("/list") public List<User> list() { return userService.selectUserList(); } ``` 在UserService中新增一个方法: ```java public List<User> selectUserList() { return userMapper.selectUserList(); } ``` 在UserMapper中新增一个方法: ```java List<User> selectUserList(); ``` 在UserMapper.xml中新增一个SQL语句: ```xml <select id="selectUserList" resultMap="BaseResultMap"> SELECT u.*, d.dept_name FROM sys_user u LEFT JOIN sys_dept d ON u.user_dept_id = d.dept_id </select> ``` 5. 最后,在前端页面中调用/list接口即可获取多表关联查询的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值