# Mysql_Query_By_Aspect **Repository Path**: Sonnet14/Mysql_Query_By_Aspect ## Basic Information - **Project Name**: Mysql_Query_By_Aspect - **Description**: 以前自己写的一套mysql分库分表的查询代码,查询速度大概在130000tps左右 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-02-24 - **Last Updated**: 2021-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MysqlAspect——mysql分库分表中间件 由于京东的shardingjdbc效率太低,所以之前做大数据的时候自己写了一套mysql分库分表算法,现在将其公共化成为中间件,就叫做MysqlAspect吧 代码示例: public class Test { public static void main(String[] args) { DataSource dataSource1= DataSource.builder().ip("10.119.10.102").port("3306").name("db_1").userName("root").passWord("123456").maxWait((long) 10000).build(); DataSource dataSource2= DataSource.builder().ip("10.119.10.102").port("3306").name("db_2").userName("root").passWord("123456").maxWait((long) 10000).build(); DataSource dataSource3= DataSource.builder().ip("10.119.10.102").port("3306").name("db_3").userName("root").passWord("123456").maxWait((long) 10000).build(); List list= Stream.of(dataSource1, dataSource2,dataSource3).collect(Collectors.toList()); //String sql="select name from @table where age=@age"; String sql="INSERT INTO @table ('name','age','num') values (@name,@age,@num) ;"; System.out.println(sql); TestBean testBean1=new TestBean("cao",23,12); TestBean testBean2=new TestBean("wang",24,22); TestBean testBean3=new TestBean("liu",15,23); TestBean testBean4=new TestBean("li",6,34); List beans= Stream.of(testBean1, testBean2,testBean3,testBean4).collect(Collectors.toList()); JdbcEntity entity=new JdbcEntity.JdbcEntityBuilder() .sql(sql) .entities(beans) .dataSources(list) .shardingBaseAlgorithm(new StringAlgorithm<>(testBean -> "db_" + testBean.getAge() % 10, testBean -> "testTable_" + testBean.getNum() % 10)) .build(); System.out.println(entity.toString()); entity.getInputDeals().forEach(s-> System.out.println(s.toString())); entity.doInsert(); } }