import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@Service
public class DbDatabaseService {
@Resource
private JdbcTemplate jdbcTemplate;
public List queryColumns(Long id) {
return queryColumns(AppConst.TABLE_PREFIX+ id);
}
public List<Map<String, Object>> queryClazz(Long id, Map<String, Object> params) {
return list(AppConst.TABLE_PREFIX+ id, null, params);
}
public List<Map<String, Object>> queryClazz(Long id, Set columns, Map<String, Object> params) {
return list(AppConst.TABLE_PREFIX+ id, columns, params);
}
public Integer count(Long id, Map<String, Object> params) {
return count(AppConst.TABLE_PREFIX+ id, params);
}
public Boolean insert(Long id, Map<String, Object> map) {
int flag = insert(AppConst.TABLE_PREFIX+ id, map);
return flag > 0;
}
public Boolean insertBatch(Long id,List<Map<String,Object>> list){
Boolean boo=true;
int[] flags=insertBatch(AppConst.TABLE_PREFIX+id,list);
for (int i = 0; i < flags.length; i++) {
int flag = flags[i];
if(flag<1){
boo=false;
}
}
return boo;
}
public Boolean update(Long id,Map<String,Object> map){
int flag=update(AppConst.TABLE_PREFIX+id,map);
if(flag>0){
return true;
}
return false;
}
private List queryColumns(String tableName){
StringBuffer sb = new StringBuffer();
sb.append(“SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_schema=‘public’ AND TABLE_NAME='”+tableName+"’ ");
return jdbcTemplate.queryForList(sb.toString(),String.class);
}
public Integer count(String tableName,Map<String,Object> params){
StringBuffer sb = new StringBuffer();
sb.append(“SELECT COUNT(*) FROM “public”.”“+tableName+”" ");
filterMap(tableName,params);
sb.append(getParamsSql(params));
return jdbcTemplate.queryForObject(sb.toString(), Integer.class);
}
public List<Map<String, Object>> list(String tableName,Map<String, Object> params) {
return list(tableName,null,params);
}
public List<Map<String, Object>> list(String tableName, Set columns, Map<String, Object> params) {
StringBuffer sb = new StringBuffer();
if (CollectionUtils.isNotEmpty(columns)) {
String columnSql = StringUtils.join(columns, “,”);
sb.append(“SELECT " + columnSql + " FROM “public”.”" + tableName + “” ");
} else {
sb.append(“SELECT * FROM “public”.”" + tableName + “” ");
}
filterMap(tableName, params);
sb.append(getParamsSql(params));
return jdbcTemplate.queryForList(sb.toString());
}
private String getParamsSql(Map<String,Object> params){
if(params==null||params.size()==0){
return “”;
}
StringBuffer bf = new StringBuffer();
if(params!=null){
bf.append(" WHERE ");
params.forEach((k,v)->{
if(v instanceof String){
v=((String) v).replace(“<”,“<”);
v=((String) v).replace(“>”,“>”);
}
bf.append(k+v+" AND ");
});
int index=bf.lastIndexOf(“AND”);
if(index!=-1){
bf.delete(index,index+3);
}
bf.append(bf);
Object sortObj=params.get(“sortField”);
Object orderObj=params.get(“order”);
if(sortObj!=null && orderObj!=null){
String sortField= (String)sortObj;
if(StringUtil.isNotBlank(sortField)){
bf.append(" order by "+sortField);
}
Boolean order= (Boolean)orderObj;
if(order){
bf.append(" asc");
}else {
bf.append(" desc");
}
}
}
return bf.toString();
}
public int insert(String tableName, Map<String,Object> map){
return jdbcTemplate.update(insertSql(tableName,map),map.values().toArray());
}
private Map<String,Object> filterMap(String tableName, Map<String,Object> map){
List columns= queryColumns(tableName);
if(map!=null && map.size()!=0){
Set keys=map.keySet();
for (String key : keys) {
if(!columns.contains(key)){
map.remove(key);
}
}
}
return map;
}
private String insertSql(String tableName, Map<String,Object> map){
StringBuffer sb = new StringBuffer();
filterMap(tableName,map);
sb.append(“INSERT INTO “public”.”“+tableName+”" (");
map.forEach((k,v)->{ sb.append(k+“,”);});
sb.append(“) VALUES (”);
map.forEach((k,v)->{
sb.append(“?,”);
});
sb.append(“); \n”);
return sb.toString().replace(“,)”,“)”);
}
public int[] insertBatch(String tableName, List<Map<String,Object>> list){
List<Object[]> batchArgs=new ArrayList<Object[]>();
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
麻烦帮忙转发一下这篇文章+关注我
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
om: 33%;" />
总结
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
麻烦帮忙转发一下这篇文章+关注我
[外链图片转存中…(img-1S29uQBx-1713608654055)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!