Java源码示例:com.jfinal.plugin.activerecord.Record

示例1
@Override
public void forDbUpdate(String tableName, String[] pKeys, Object[] ids, Record record, final StringBuilder sql, List<Object> paras) {
    Dialect builtInDelegate = findCompatibleDialect();
    if (builtInDelegate != null) {
        builtInDelegate.forDbUpdate(tableName, pKeys, ids, record, sql, paras);
        return;
    }

    tableName = tableName.trim();
    trimPrimaryKeys(pKeys);

    sql.append("update ").append(tableName).append(" set ");
    for (Map.Entry<String, Object> e : record.getColumns().entrySet()) {
        String colName = e.getKey();
        if (!isPrimaryKey(colName, pKeys)) {
            if (!paras.isEmpty()) {
                sql.append(", ");
            }
            sql.append(colName).append(" = ? ");
            paras.add(e.getValue());
        }
    }
    sql.append(" where ");
    appendWhereParamters(sql, pKeys);
}
 
示例2
/**
 * 查询某节点子孙树节点
 * @param rootId 根id
 * @param tableName 数据表名
 * @param idFieldName id 字段
 * @param pidFieldName pid 字段名
 * @return
 */
public static String getSonTreeIds(String rootId, String tableName, String idFieldName, String pidFieldName) {
    String sTemp = "$";
    String sTempChd = rootId;
    Record recordTemp;
    while (sTempChd != null) {
        sTemp = sTemp.concat(",").concat(sTempChd);
        recordTemp = Db.findFirst("SELECT group_concat(" + idFieldName + ") as sTempChd  FROM " + tableName + " where FIND_IN_SET(" + pidFieldName + ",'" + sTempChd + "')>0;");
        if (recordTemp == null) {
            sTempChd = null;
        } else {
            sTempChd = recordTemp.getStr("sTempChd");
        }
    }
    return sTemp.replaceAll("\\$,", "");
}
 
示例3
/**
 * Record转为Map,驼峰命名
 *
 * @param record
 * @return
 */
public static Map<String, Object> recordToCamelCaseMap(Record record) {
    if (null == record) {
        return null;
    }
    String[] keys = record.getColumnNames();
    Map<String, Object> map = new HashMap<>();
    for (String key : keys) {
        Object value = record.get(key);
        key = StrKit.toCamelCase(key.toLowerCase());
        if (null != value) {
            map.put(key, value);
        }
    }
    return map;
}
 
示例4
/**
 * 通过 menuId 和  roleId 查询按钮列表
 */
public void buttonList(){
  String menuId = getPara("menuId");
  String roleId = getPara("roleId");
  if(StringUtils.isEmpty(menuId) || StringUtils.isEmpty(roleId) ){
      renderJson(new ArrayList<>());
      return;
  }
  String sql = "SELECT a.id,a.buttonTxt,a.buttonCode,b.sysRoleId as checkFlag " +
          " FROM  sys_button a " +
          "	left join sys_role_button b on a.id = b.sysButtonId and b.sysRoleId = ? " +
          "WHERE " +
          "	sysMenuId = ? ";
  List<Record> btnList = Db.find(sql,roleId,menuId);
  renderJson(btnList);
}
 
示例5
@Override
public void doUpdateTags(long userId, Long[] tagIds) {
    Db.tx(() -> {
        Db.update("delete from user_tag_mapping where user_id = ?", userId);

        if (tagIds != null && tagIds.length > 0) {
            List<Record> records = new ArrayList<>();
            for (long tagId : tagIds) {
                Record record = new Record();
                record.set("user_id", userId);
                record.set("tag_id", tagId);
                records.add(record);
            }
            Db.batchSave("user_tag_mapping", records, records.size());
        }

        return true;
    });
}
 
示例6
@Override
@Cacheable(name = "user_permission", key = "user_permissions:#(userId)", nullCacheEnable = true)
public List<Permission> findPermissionListByUserId(long userId) {

    Set<Permission> permissions = new HashSet<>();
    String sql = "select * from user_role_mapping where user_id = ? ";
    List<Record> userRoleRecords = Db.find(sql, userId);
    if (userRoleRecords != null) {
        for (Record userRoleRecord : userRoleRecords) {
            List<Permission> rolePermissions = findPermissionListByRoleId(userRoleRecord.getLong("role_id"));
            if (rolePermissions != null) {
                permissions.addAll(rolePermissions);
            }
        }
    }

    return new ArrayList<>(permissions);
}
 
示例7
@Override
@Cacheable(name = "user_permission", key = "role:#(roleId)", nullCacheEnable = true)
public List<Permission> findPermissionListByRoleId(long roleId) {
    String sql = "select * from role_permission_mapping where role_id = ? ";
    List<Record> rolePermissionRecords = Db.find(sql, roleId);
    if (rolePermissionRecords == null || rolePermissionRecords.isEmpty()) {
        return null;
    }

    List<Permission> permissionList = new ArrayList<>();
    for (Record rolePermissionRecord : rolePermissionRecords) {
        Permission permission = findById(rolePermissionRecord.getLong("permission_id"));
        if (permission != null) {
            permissionList.add(permission);
        }
    }

    return permissionList;
}
 
示例8
@Override
public boolean hasAnyRole(long userId) {
    List<Record> records = findAllUserRoleMapping();
    if (records == null || records.isEmpty()) {
        return false;
    }

    for (Record record : records){
        Long uid = record.getLong("user_id");
        if (uid != null && uid.equals(userId)){
            return true;
        }
    }

    return false;
}
 
示例9
@Override
@CachesEvict({
        @CacheEvict(name = "user_role", key = "*"),
        @CacheEvict(name = "user_permission", key = "*")
})
public boolean doResetUserRoles(long userId, Long... RoleIds) {
    if (RoleIds == null || RoleIds.length == 0) {
        return Db.delete("delete from user_role_mapping where user_id = ? ", userId) > 0;
    }

    return Db.tx(() -> {
        Db.delete("delete from user_role_mapping where user_id = ? ", userId);

        List<Record> records = new ArrayList<>();
        for (Long roleId : RoleIds) {
            Record record = new Record();
            record.set("user_id", userId);
            record.set("role_id", roleId);
            records.add(record);
        }

        Db.batchSave("user_role_mapping", records, records.size());

        return true;
    });
}
 
示例10
@Override

    @CachesEvict({
            @CacheEvict(name = "articles", key = "*"),
            @CacheEvict(name = "article-category", key = "#(articleId)"),
    })
    public void doUpdateCategorys(long articleId, Long[] categoryIds) {

        Db.tx(() -> {
            Db.update("delete from article_category_mapping where article_id = ?", articleId);

            if (categoryIds != null && categoryIds.length > 0) {
                List<Record> records = new ArrayList<>();
                for (long categoryId : categoryIds) {
                    Record record = new Record();
                    record.set("article_id", articleId);
                    record.set("category_id", categoryId);
                    records.add(record);
                }
                Db.batchSave("article_category_mapping", records, records.size());
            }

            return true;
        });
    }
 
示例11
@Override
@CachesEvict({
        @CacheEvict(name = "products", key = "*"),
        @CacheEvict(name = "product-category", key = "#(productId)"),
})
public void doUpdateCategorys(long productId, Long[] categoryIds) {
    Db.tx(() -> {
        Db.update("delete from product_category_mapping where product_id = ?", productId);

        if (categoryIds != null && categoryIds.length > 0) {
            List<Record> records = new ArrayList<>();
            for (long categoryId : categoryIds) {
                Record record = new Record();
                record.set("product_id", productId);
                record.set("category_id", categoryId);
                records.add(record);
            }
            Db.batchSave("product_category_mapping", records, records.size());
        }

        return true;
    });
}
 
示例12
@Override
public void forDbSave(String tableName, String[] pKeys, Record record, StringBuilder sql, List<Object> paras) {

    Dialect builtInDelegate = findCompatibleDialect();
    if (builtInDelegate != null) {
        builtInDelegate.forDbSave(tableName, pKeys, record, sql, paras);
        return;
    }


    tableName = tableName.trim();
    trimPrimaryKeys(pKeys);

    sql.append("insert into ");
    sql.append(tableName).append('(');
    StringBuilder temp = new StringBuilder();
    temp.append(") values(");

    int count = 0;
    for (Map.Entry<String, Object> e : record.getColumns().entrySet()) {
        String colName = e.getKey();
        if (count++ > 0) {
            sql.append(", ");
            temp.append(", ");
        }
        sql.append(colName);

        Object value = e.getValue();
        if (value instanceof String && isPrimaryKey(colName, pKeys) && ((String) value).endsWith(".nextval")) {
            temp.append(value);
        } else {
            temp.append('?');
            paras.add(value);
        }
    }
    sql.append(temp.toString()).append(')');
}
 
示例13
/**
 * Data Count
 */
public Long dataCount() {
	SqlPara sql = SqlpKit.select(this, "count(*) AS cnt");
	Record record = Db.findFirst(sql);
	if (null != record) {
		return record.get("cnt");
	}
	return 0L;
}
 
示例14
public static Model<?> toModel(Class<? extends Model<?>> clazz, Record record) {
    Model<?> model = null;
    try {
        model = clazz.newInstance();
    } catch (Exception e) {
        LOG.error(e.getMessage(), e);
        return model;
    }
    model.put(record.getColumns());
    return model;
}
 
示例15
public List<String> queryAllPerms(Long userId) {
    SqlPara sqlPara = Db.getSqlPara("sysUser.queryAllPerms", Kv.by("userId", userId));
    List<Record> sysUserList = Db.find(sqlPara);
    List<String> perms = new ArrayList<>();
    for (Record r:sysUserList
         ) {
        if(r == null || r.get("perms") == null) {
            continue;
        }
        perms.add(r.get("perms"));
    }

    return perms;
}
 
示例16
public List<Long> queryAllMenuId(Long userId) {
    SqlPara sqlPara = Db.getSqlPara("sysUser.queryAllMenuId", Kv.by("userId", userId));
    List<Record> sysMenuList = Db.find(sqlPara);
    List<Long> menuIds = new ArrayList<>();
    for (Record r:sysMenuList
         ) {
        if(r == null || r.get("menu_id") == null) {
            continue;
        }
        menuIds.add(r.get("menu_id"));
    }

    return menuIds;
}
 
示例17
@Override
public List<FavoriteGoodsDTO> list(String userId) {
    SqlPara sqlPara =  Db.getSqlPara("favoriteGoods.list", Kv.by("userId", userId));
    List<Record> recordList = Db.find(sqlPara);
    List<FavoriteGoodsDTO> favoriteGoodsDTOList = RecordUtils.converModel(recordList, FavoriteGoodsDTO.class);
    return favoriteGoodsDTOList;
}
 
示例18
@Override
public List<ProductDTO> listDetailByProductIds(String productIds) {
    String[] productIdArr = productIds.split(",");
    SqlPara sqlPara = Db.getSqlPara("product.listDetailByProductIds", Kv.by("productIds", productIdArr));
    List<Record> recordList = Db.find(sqlPara);
    List<ProductDTO> productDTOList = RecordUtils.converModel(recordList, ProductDTO.class);

    return productDTOList;
}
 
示例19
@Override
public List<CartDTO> listDetail(String userId) {
    SqlPara sqlPara =  Db.getSqlPara("cart.listDetail", Kv.by("userId", userId));
    List<Record> recordList = Db.find(sqlPara);
    List<CartDTO> cartDTOList = RecordUtils.converModel(recordList, CartDTO.class);
    return cartDTOList;
}
 
示例20
/**
 * Record 转 任意实例类
 *
 * @param recordList
 * @return
 */
public static <T> List<T> converModel(List<Record> recordList, Class<T> clazz) {

    List<Map<String, Object>> list = recordList.stream().map(item -> {
        return item.getColumns();
    }).collect(Collectors.toList());

    String str = JSON.toJSONString(list);
    List<T> arr = JSON.parseArray(str, clazz);
    return arr;
}
 
示例21
@Test
    public void converModel() {
        Record record = Db.findFirst("select * from product p where p.sn ='20180715210707'");
        String str = JSON.toJSONString(record.getColumns());
        Product product = JSON.parseObject(str, Product.class);
//        Product product = RecordUtils.converModel(Product.class, record);
        log.info("{}", product);
    }
 
示例22
@Test
public void test() {
    List<Filter> filterList = new ArrayList<>();
    Filter filter = new Filter();
    filter.setProperty("aaa");
    filter.setOperator(Filter.Operator.eq);
    filter.setValue("123");
    filterList.add(filter);

    filter = new Filter();
    filter.setProperty(null);
    filter.setOperator(Filter.Operator.eq);
    filter.setValue("111");
    filterList.add(filter);

    filter = new Filter();
    filter.setProperty("bbb");
    filter.setOperator(Filter.Operator.eq);
    filter.setValue("321");
    filterList.add(filter);

    filter = new Filter();
    filter.setProperty("intest");
    filter.setOperator(Filter.Operator.in);
    filter.setValue(new ArrayList<String>() {
        {add("aaa");add("bbb");}
    });
    filterList.add(filter);
    SqlPara sqlPara = Db.getSqlPara("common.findList", Kv.by("tableName", "aaa").set("filters", filterList));
    List<Record> record = Db.find(sqlPara);
    log.info("{}", record);
}
 
示例23
/**
 * @param serializer
 * @param object
 * @param fieldName
 * @param fieldType
 * @param features
 * @throws IOException
 * @author tanyaowu
 */
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
	if (object == null) {
		serializer.out.writeNull();
		return;
	}

	Record record = (Record) object;

	Map<String, Object> map = record.getColumns();
	serializer.write(map);
}
 
示例24
/**
 * 获得 未读消息数量
 */
public void noticeUnreadCount() {
    SysUser sysUser = WebUtils.getSysUser(this);
    String sql = " select count(1) as unreadCount from sys_notice_detail where receiver = ? and hasRead !='Y' ";
    Record record = Db.findFirst(sql, sysUser.getId());
    Ret ret = Ret.create().setOk().set("unreadCount", record == null ? 0 : record.get("unreadCount"));
    renderJson(ret);
}
 
示例25
/**
 * List<Record>转为List<Map<String, Object>>,驼峰命名
 *
 * @param records
 * @return
 */
public static List<Map<String, Object>> recordsToCamelCaseMaps(List<Record> records) {
    List<Map<String, Object>> maps = new ArrayList<>();
    for (Record record : records) {
        maps.add(recordToCamelCaseMap(record));
    }
    return maps;
}
 
示例26
/**
 * Page<Record>转为Page<Map<String, Object>>,驼峰命名
 *
 * @param records
 * @return
 */
public static Page<Map<String, Object>> recordsToCamelCaseMaps(Page<Record> records) {
    List<Record> recordList = records.getList();
    List<Map<String, Object>> maps = new ArrayList<>();
    for (Record record : recordList) {
        maps.add(recordToCamelCaseMap(record));
    }
    return new Page<>(maps, records.getPageNumber(), records.getPageSize(),
            records.getTotalPage(), records.getTotalRow());
}
 
示例27
public void query() {
    Map<String, AtomicInteger> cacheAsMap = CacheContainer.getLoginRetryLimitCache().getCache().asMap();
    Set<String> userNameSet = new LinkedHashSet<>();
    cacheAsMap.forEach((K, V) -> {
        if (V.get() >= LoginRetryLimitCache.RETRY_LIMIT) {
            userNameSet.add(K);
        }
    });
    String ids = "'" + Joiner.on("','").join(userNameSet) + "'";
    List<Record> records = Db.find("select id,username,realName,job from sys_user where username in (" + ids + ")");
    renderDatagrid(records);
}
 
示例28
/**
 * 通过通知类型id 查询关联角色 再查询到相关联的用户
 *
 * @param noticeTypeId
 * @return
 */
public List<Record> findUserIdsByNoticeType(String noticeTypeId) {
    List<Record> userIds = Db.find(" SELECT d.sysUserId " +
            "FROM " +
            "( SELECT a.sysRoleId FROM sys_notice_type_sys_role a, sys_role b  WHERE a.sysRoleId = b.id  and a.sysNoticeTypeId = ? ) aa " +
            "LEFT JOIN sys_user_role d ON aa.sysRoleId = d.sysRoleId", noticeTypeId);
    return userIds;
}
 
示例29
/**
 * 通过用户id 查询 角色id
 *
 * @param userId
 * @return
 */
public String findRoleIdsByUserId(String userId) {
    String sql = " select GROUP_CONCAT(c.id) as roleIds" +
            "  from sys_user a, sys_user_role b,sys_role c " +
            "  where a.id = b.sysUserId and b.sysRoleId = c.id  and a.id = ? ";
    Record record = Db.findFirst(sql, userId);
    return record.getStr("roleIds");
}
 
示例30
/**
 * 通过用户查询角色编码
 *
 * @param userId
 * @return
 */
public String findRoleCodesByUserId(String userId) {
    String sql = "select GROUP_CONCAT(c.roleCode) as roleCodes" +
            "  from sys_user a, sys_user_role b,sys_role c " +
            "  where a.id = b.sysUserId and b.sysRoleId = c.id  and a.id = ? ";
    Record record = Db.findFirst(sql, userId);
    return record.getStr("roleCodes");
}