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");
}