在jeecg-boot中使用代碼生成器&mybatis-plus


一、代碼生成器
代碼生成器--》jeecgOneGUI
配置文件:resource/jeecg/jeecg_config.properties,修改目標生成的路徑和包名
數據庫連接:resource/jeecg/jeecg_database.properties,改數據庫連接
生成內容:
(1)、后端:生成數據庫表對應的實體,生成實體的增刪改查相關接口(主要利用mybatis-plus自帶封裝的方法)
(2)、前端:生成的vue文件,功能類似用戶管理,有數據列表展示和記錄的增刪改查

 

一、mybatis-plus

1、類的封裝
服務類繼承了IService,
接口類繼承了ServiceImpl,implements了服務類


2、mybatis-plus的方法(常用):
新增:save(),
更新:updateById(),
查詢(+查詢器):getById()、list();getOne();
刪除:removeById()
分頁:page(page, queryWrapper);


3、實體類,可以set或者get屬性。(代碼生成器生成的實體類,會對表中字段名稱進行修改,會將下划線改成駝峰命名)
疑問:接口獲取參數對象:OperatStaff operatStaff或者@RequestBody OperatStaff operatStaff區別?

4、接口請求方式:
查詢:get
新增:post
編輯:put
刪除:delete

5、查詢器:
示例1:普通查詢器-查詢

public Result<?> queryPageQuery(OperatStaff operatStaff,HttpServletRequest req) 
{
             QueryWrapper<OperatStaff> queryWrapper = QueryGenerator.initQueryWrapper(operatStaff, req.getParameterMap());(參數1:實體和參數值,參數2:所有參數和值)
             List<OperatStaff> list = operatStaffService.list(queryWrapper);
             return Result.ok(list);
}

示例2:普通查詢器-分頁

public Result<?> queryPageList(OperatStaff operatStaff,Integer pageNo,Integer pageSize,HttpServletRequest req)
{
            QueryWrapper<OperatStaff> queryWrapper = QueryGenerator.initQueryWrapper(operatStaff, req.getParameterMap());
            Page<OperatStaff> page = new Page<OperatStaff>(pageNo, pageSize);(參數1:第幾頁,參數2:每頁數量)
            IPage<OperatStaff> pageList = operatStaffService.page(page, queryWrapper);
            return Result.ok(pageList);
}

示例3:普通查詢器-復雜查詢+日期過濾+排序

public Result<?> queryPageQuery(String starttime,String endtime,String pscode,String outputcode,String monitorid)
{
    QueryWrapper<OperatCollect> queryWrapper = new QueryWrapper<OperatCollect>();
    queryWrapper.ge("start_time", DateUtil.strToDate(starttime,"yyyy-MM-dd HH:mm:ss"));
    queryWrapper.le("start_time",DateUtil.strToDate(endtime,"yyyy-MM-dd HH:mm:ss"));
    queryWrapper.eq(oConvertUtils.isNotEmpty(pscode),"pscode",pscode);
    queryWrapper.eq(oConvertUtils.isNotEmpty(outputcode),"outputcode",outputcode);
    queryWrapper.eq(oConvertUtils.isNotEmpty(monitorid),"monitorid",monitorid);
    queryWrapper.orderByAsc("start_time");//排序
    //queryWrapper.apply(oConvertUtils.isNotEmpty(startdate)," start_time>='"+startdate+"'");
    //queryWrapper.apply(oConvertUtils.isNotEmpty(endtime)," start_time<='{0}'",endtime);
    List<OperatCollect> pageList = operatCollectService.list(queryWrapper);
    return Result.ok(pageList);
}

示例4:蘭博查詢器

LambdaQueryWrapper<SysRolePermission> query = new LambdaQueryWrapper<SysRolePermission>()
                    eq(SysRolePermission::getPermissionId, permissionId)
                    .eq(SysRolePermission::getRoleId,roleId);
SysRolePermission sysRolePermission = sysRolePermissionService.getOne(query);
LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>();
            query.eq(SysPermission::getDelFlag, CommonConstant.DEL_FLAG_0);
            query.orderByAsc(SysPermission::getSortNo);
List<SysPermission> list = sysPermissionService.list(query);

LambdaQueryWrapper和QueryWrapper區別:
QueryWrapper 的列名匹配使用的是 “數據庫中的字段名(一般是下划線規則)”
LambdaQueryWrapper 的列名匹配使用的是“Lambda的語法,偏向於對象”,兼容性更好

炫技示例:

OperatCompany oc=this.operatCompanyService.getOne(new LambdaQueryWrapper<OperatCompany>().eq(OperatCompany::getName, username));
if (oc == null) return Result.error("用戶不存在!");
String passwordEncode = PasswordUtil.encrypt(oc.getId(), password, oc.getSalt());
operatCompanyService.update(new OperatCompany().setPassword(passwordEncode),new QueryWrapper<OperatCompany>().eq(oConvertUtils.isNotEmpty(username),"name",username));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM