├── README.md ├── README_CN.md ├── batch-insert-compare.png ├── pom.xml └── src └── main ├── java └── org │ └── teasoft │ └── orm │ └── compare │ ├── InitData.java │ ├── TestBee.java │ ├── TestMybatis.java │ ├── TestORM.java │ ├── TestORM_Large.java │ ├── bee │ └── service │ │ └── BeeOrdersService.java │ ├── model │ └── Orders.java │ ├── mybatis │ ├── dao │ │ ├── OrdersDao.java │ │ ├── OrdersMapper.java │ │ └── impl │ │ │ └── OrdersDaoImpl.java │ └── service │ │ └── MybatisOrdersService.java │ └── service │ └── OrdersService.java └── resources ├── bee.properties ├── log4j2.xml ├── orders.sql ├── test-bee-log.txt └── test-mybatis-log.txt /README.md: -------------------------------------------------------------------------------- 1 | 2 | ORM Compare 3 | ========= 4 | #### Which feature do you want? 5 | 6 | Test Evn : Local windows. 7 | DB: MySQL (Version 5.6.24). 8 | Test point: Batch Insert;Select paging; Transaction(update and select). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
Batch Insert(unit: ms)
 5k1w2w5w10w
Bee88072062014204700
Bee35935848412484000
Bee34829754612793470
(AVG)529.00 458.33 550.00 1315.67 4056.67
      
MyBatis1513109214661700Not Support
MyBatis10455778121923Not Support
MyBatis102147016001850Not Support
(AVG)11937131292.67 1824.33 Exception
100 |

 

101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 |
select(unit: ms)
 2050100200500
Bee2120465167
Bee1678321661
Bee1578794844
(AVG)17.33 58.67 52.33 38.33 57.33
      
MyBatis99313179522326160
MyBatis423655162223106260
MyBatis421370122123416230
(AVG)314.33 446.00 1546.00 2294.33 6216.67
191 |

 

192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 |
Transaction(update and select) (unit: ms)
 2050100200500
Bee1081708014031600
Bee1076787817331240
Bee1110629417131688
(AVG)1089.00 70.00 84.00 161.33 31509.33
      
MyBatis1170317914632404
MyBatis1092337914132891
MyBatis1170418115131171
(AVG)11443579.67 146.00 32155.33
282 | 283 | 284 | #### Bee need files(3): 285 | org\teasoft\orm\compare\model\Orders.java 286 | org\teasoft\orm\compare\service\OrdersService.java 287 | org\teasoft\orm\compare\bee\service\BeeOrdersService.java 288 | 289 | #### MyBatis need files(6): 290 | org\teasoft\orm\compare\model\Orders.java 291 | **org\teasoft\orm\compare\mybatis\dao\OrdersDao.java** 292 | **org\teasoft\orm\compare\mybatis\dao\OrdersMapper.java** 293 | **org\teasoft\orm\compare\mybatis\dao\impl\OrdersDaoImpl.java** 294 | org\teasoft\orm\compare\service\OrdersService.java 295 | org\teasoft\orm\compare\mybatis\service\MybatisOrdersService.java 296 | 297 | 298 | **Bee** is an ORM framework. 299 | **Bee** is an easy and high efficiency ORM framework. **Easy for Stronger.** 300 | **Coding Complexity is O(1),it means that Bee will do the Dao for you**. 301 | 302 | **Bee** see: 303 | https://github.com/automvc/bee 304 | -------------------------------------------------------------------------------- /README_CN.md: -------------------------------------------------------------------------------- 1 | 2 | ## ORM Compare 3 | 4 | [ORM-Compare](../../../orm-compare) 5 | 6 | 测试环境: Windows. 7 | 数据库: MySQL (Version 5.6.24). 8 | 测试点: 批量插入;分页查询;事务(update and select). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
批量插入(单位: ms)
 5k1w2w5w10w
Bee529.00 458.33 550.00 1315.67 4056.67
MyBatis11937131292.67 1824.33 Exception
44 | 45 |

 

46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
分页查询(单位: ms)
 20次50次100次200次500次
Bee17.33 58.67 52.33 38.33 57.33
MyBatis314.33 446.00 1546.00 2294.33 6216.67
80 | 81 |

 

82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
事务(update and select) (单位: ms)
 20次50次100次200次500次
Bee1089.00 70.00 84.00 161.33 31509.33
MyBatis11443579.67 146.00 32155.33
116 | 117 | ![batch-insert](https://gitee.com/automvc/orm-compare/blob/master/batch-insert-compare.png "batch-insert") 118 | 119 | #### Bee需要用的文件(3个): 120 | org\teasoft\orm\compare\model\Orders.java 121 | org\teasoft\orm\compare\service\OrdersService.java 122 | org\teasoft\orm\compare\bee\service\BeeOrdersService.java 123 | 124 | #### MyBatis需要用的文件(6个): 125 | org\teasoft\orm\compare\model\Orders.java 126 | **org\teasoft\orm\compare\mybatis\dao\OrdersDao.java** 127 | **org\teasoft\orm\compare\mybatis\dao\OrdersMapper.java** 128 | **org\teasoft\orm\compare\mybatis\dao\impl\OrdersDaoImpl.java** 129 | org\teasoft\orm\compare\service\OrdersService.java 130 | org\teasoft\orm\compare\mybatis\service\MybatisOrdersService.java 131 | 132 | 133 | **Bee** is an ORM framework. 134 | **Bee** is an easy and high efficiency ORM framework. **Easy for Stronger.** 135 | **Coding Complexity is O(1),it means that Bee will do the Dao for you**. 136 | 137 | **Bee** see: 138 | https://github.com/automvc/bee 139 | -------------------------------------------------------------------------------- /batch-insert-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/automvc/orm-compare/c963b76ba86afa6a1175d8c7d379c0228fd1c7f0/batch-insert-compare.png -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | org.teasoft 5 | orm-compare 6 | jar 7 | 1.8 8 | orm-compare 9 | 10 | UTF-8 11 | 1.7 12 | 1.7 13 | 5.1.38 14 | 2.7 15 | 1.8 16 | 3.3.0 17 | 2.7 18 | 19 | 20 | 21 | 22 | org.teasoft 23 | bee 24 | ${bee.version} 25 | 26 | 27 | 28 | org.teasoft 29 | honey 30 | ${bee.version} 31 | 32 | 33 | 34 | org.teasoft 35 | bee-ext 36 | ${bee.version} 37 | 38 | 39 | 40 | com.alibaba 41 | druid 42 | 1.0.18 43 | 44 | 45 | 46 | org.mybatis 47 | mybatis 48 | ${mybatis.version} 49 | 50 | 51 | 52 | 53 | log4j 54 | log4j 55 | 1.2.17 56 | provided 57 | 58 | 59 | 60 | org.apache.logging.log4j 61 | log4j-slf4j-impl 62 | ${log4j.version} 63 | 64 | 65 | org.apache.logging.log4j 66 | log4j-api 67 | ${log4j.version} 68 | 69 | 70 | org.apache.logging.log4j 71 | log4j-core 72 | ${log4j.version} 73 | 74 | 75 | 76 | mysql 77 | mysql-connector-java 78 | ${mysql-connector-java.version} 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/InitData.java: -------------------------------------------------------------------------------- 1 | package org.teasoft.orm.compare; 2 | 3 | import java.math.BigDecimal; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | import org.teasoft.honey.distribution.GenIdFactory; 8 | import org.teasoft.orm.compare.model.Orders; 9 | 10 | public class InitData { 11 | private static boolean isFirst=true; 12 | public static Orders getOneOrders(){ 13 | Orders orders=new Orders(); 14 | long id=GenIdFactory.get("TestORM"); //use Bee's GenId: SerialUniqueId 15 | orders.setId(id); 16 | if(isFirst) { 17 | orders.setId(12345678912L); //for select 18 | isFirst=false; //fixed bug 19 | } 20 | orders.setUserid("testid"); 21 | orders.setName("ormtest"); 22 | orders.setTotal(new BigDecimal("99.96")); 23 | orders.setRemark("test"); 24 | 25 | // id gen from PearFlowerId as order id. 26 | long seqNo=GenIdFactory.get("","PearFlowerId"); 27 | orders.setSequence(seqNo+""); 28 | 29 | return orders; 30 | } 31 | 32 | 33 | public static List getOrdersList(int size){ 34 | List list =new ArrayList<>(); 35 | for (int i = 0; i < size; i++) { 36 | list.add(getOneOrders()); 37 | } 38 | return list; 39 | } 40 | 41 | public static Orders[] getOrdersArray(int size){ 42 | List list=getOrdersList(size); 43 | Orders array[]=new Orders[list.size()]; 44 | for (int i = 0; i < array.length; i++) { 45 | array[i]=list.get(i); 46 | } 47 | 48 | return array; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/TestBee.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016-2020 the original author.All rights reserved. 3 | * Kingstar(honeysoft@126.com) 4 | * The license,see the LICENSE file. 5 | */ 6 | 7 | package org.teasoft.orm.compare; 8 | 9 | import org.teasoft.orm.compare.bee.service.BeeOrdersService; 10 | import org.teasoft.orm.compare.service.OrdersService; 11 | 12 | /** 13 | * @author Kingstar 14 | * @since 1.8 15 | */ 16 | public class TestBee { 17 | 18 | public static void main(String[] args) { 19 | 20 | OrdersService service = new BeeOrdersService(); 21 | String ormName = "Bee"; 22 | 23 | TestORM.test(service, ormName); 24 | // TestORM_Large.test(service, ormName); 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/TestMybatis.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016-2020 the original author.All rights reserved. 3 | * Kingstar(honeysoft@126.com) 4 | * The license,see the LICENSE file. 5 | */ 6 | 7 | package org.teasoft.orm.compare; 8 | 9 | import org.teasoft.orm.compare.mybatis.service.MybatisOrdersService; 10 | import org.teasoft.orm.compare.service.OrdersService; 11 | 12 | /** 13 | * @author Kingstar 14 | * @since 1.8 15 | */ 16 | public class TestMybatis { 17 | 18 | public static void main(String[] args) { 19 | OrdersService service=new MybatisOrdersService(); 20 | String ormName="Mybatis"; 21 | 22 | TestORM.test(service, ormName); 23 | // TestORM_Large.test(service, ormName); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/TestORM.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016-2020 the original author.All rights reserved. 3 | * Kingstar(honeysoft@126.com) 4 | * The license,see the LICENSE file. 5 | */ 6 | 7 | package org.teasoft.orm.compare; 8 | 9 | import java.util.List; 10 | 11 | import org.teasoft.orm.compare.bee.service.BeeOrdersService; 12 | import org.teasoft.orm.compare.model.Orders; 13 | import org.teasoft.orm.compare.service.OrdersService; 14 | 15 | /** 16 | * @author Kingstar 17 | * @since 1.8 18 | */ 19 | public class TestORM { 20 | 21 | public static void test(OrdersService service,String ormName) { 22 | 23 | System.out.println("Now test the ORM: "+ormName); 24 | 25 | int insertBatchSize; 26 | int selectUpdateSize; 27 | for (int i = 1; i <= 4; i++) { 28 | if(i==1){ 29 | insertBatchSize=5000; 30 | selectUpdateSize=20; 31 | }else if(i==2){ 32 | insertBatchSize=10000; 33 | selectUpdateSize=50; 34 | }else if(i==3){ 35 | insertBatchSize=20000; 36 | selectUpdateSize=100; 37 | }else if(i==4){ 38 | insertBatchSize=50000; 39 | selectUpdateSize=200; 40 | } 41 | else{ //i=5 42 | insertBatchSize=100000; //10w 43 | selectUpdateSize=500; 44 | } 45 | System.out.println("Now it is "+ i + " time."); 46 | doTest(ormName, service, insertBatchSize, selectUpdateSize); 47 | } 48 | 49 | } 50 | 51 | 52 | private static void doTest(String ormName,OrdersService service,int insertBatchSize,int selectUpdateSize){ 53 | 54 | service.setCreateSize(insertBatchSize); 55 | 56 | service.insertOne(); //can start the ds. 57 | 58 | //test 1 59 | long start=System.currentTimeMillis(); 60 | service.insertBatch(); //will use insertBatchSize 61 | long end=System.currentTimeMillis(); 62 | 63 | System.out.print("----test batch insert: "); 64 | System.out.println((end-start)+ " ms"); 65 | 66 | //test 2 67 | long start2=System.currentTimeMillis(); 68 | for (int i = 0; i < selectUpdateSize; i++) {//22001 69 | List list=service.getOrdersList(30000, 100); 70 | } 71 | long end2=System.currentTimeMillis(); 72 | 73 | System.out.println("----test select "+selectUpdateSize+" times: "+(end2-start2)+ " ms"); 74 | 75 | //test 3 76 | long start3=System.currentTimeMillis(); 77 | for (int i = 0; i < selectUpdateSize; i++) { 78 | service.updateTotalByIdAndGet(100, 12345678912L); //can change the select id. 79 | // service.updateTotalByIdAndGet(100, 487024993763334L); //can change the select id. 80 | } 81 | long end3=System.currentTimeMillis(); 82 | System.out.println("----test update and select "+selectUpdateSize+" times: "+(end3-start3)+ " ms"); 83 | 84 | System.out.println((end-start)+" "+(end2-start2)+ " "+(end3-start3)); 85 | System.out.println(); 86 | 87 | //not for test this time. 88 | BeeOrdersService beeservice=new BeeOrdersService(); 89 | beeservice.deleteOrdersById(12345678912L); 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/TestORM_Large.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016-2020 the original author.All rights reserved. 3 | * Kingstar(honeysoft@126.com) 4 | * The license,see the LICENSE file. 5 | */ 6 | 7 | package org.teasoft.orm.compare; 8 | 9 | import java.util.List; 10 | 11 | import org.teasoft.orm.compare.bee.service.BeeOrdersService; 12 | import org.teasoft.orm.compare.model.Orders; 13 | import org.teasoft.orm.compare.service.OrdersService; 14 | 15 | /** 16 | * @author Kingstar 17 | * @since 1.8 18 | */ 19 | public class TestORM_Large { 20 | 21 | public static void test(OrdersService service,String ormName) { 22 | 23 | System.out.println("Now test the ORM: "+ormName); 24 | 25 | int insertBatchSize; 26 | int selectUpdateSize; 27 | // for (int i = 1; i <= 4; i++) { 28 | for (int i = 5; i <= 5; i++) { 29 | 30 | if(i==1){ 31 | insertBatchSize=5000; 32 | selectUpdateSize=20; 33 | }else if(i==2){ 34 | insertBatchSize=10000; 35 | selectUpdateSize=50; 36 | }else if(i==3){ 37 | insertBatchSize=20000; 38 | selectUpdateSize=100; 39 | }else if(i==4){ 40 | insertBatchSize=50000; 41 | selectUpdateSize=200; 42 | } 43 | else{ //i=5 44 | insertBatchSize=100000; //10w 45 | selectUpdateSize=500; 46 | } 47 | System.out.println("Now it is "+ i + " time."); 48 | doTest(ormName, service, insertBatchSize, selectUpdateSize); 49 | } 50 | 51 | } 52 | 53 | 54 | private static void doTest(String ormName,OrdersService service,int insertBatchSize,int selectUpdateSize){ 55 | 56 | service.setCreateSize(insertBatchSize); 57 | 58 | service.insertOne(); //can start the ds. 59 | 60 | //test 1 61 | long start=System.currentTimeMillis(); 62 | // service.insertBatch(); //will use insertBatchSize 63 | long end=System.currentTimeMillis(); 64 | 65 | System.out.print("----test batch insert: "); 66 | System.out.println((end-start)+ " ms"); 67 | 68 | //test 2 69 | long start2=System.currentTimeMillis(); 70 | for (int i = 0; i < selectUpdateSize; i++) {//22001 71 | List list=service.getOrdersList(30000, 100); 72 | } 73 | long end2=System.currentTimeMillis(); 74 | 75 | System.out.println("----test select "+selectUpdateSize+" times: "+(end2-start2)+ " ms"); 76 | 77 | //test 3 78 | long start3=System.currentTimeMillis(); 79 | for (int i = 0; i < selectUpdateSize; i++) { 80 | service.updateTotalByIdAndGet(100, 12345678912L); //can change the select id. 81 | // service.updateTotalByIdAndGet(100, 487024993763334L); //can change the select id. 82 | } 83 | long end3=System.currentTimeMillis(); 84 | System.out.println("----test update and select "+selectUpdateSize+" times: "+(end3-start3)+ " ms"); 85 | 86 | System.out.println((end-start)+" "+(end2-start2)+ " "+(end3-start3)); 87 | System.out.println(); 88 | 89 | //not for test this time. 90 | BeeOrdersService beeservice=new BeeOrdersService(); 91 | beeservice.deleteOrdersById(12345678912L); 92 | } 93 | 94 | } 95 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/bee/service/BeeOrdersService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016-2020 the original author.All rights reserved. 3 | * Kingstar(honeysoft@126.com) 4 | * The license,see the LICENSE file. 5 | */ 6 | 7 | package org.teasoft.orm.compare.bee.service; 8 | 9 | import java.util.List; 10 | 11 | import org.teasoft.bee.osql.Condition; 12 | import org.teasoft.bee.osql.SuidRich; 13 | import org.teasoft.bee.osql.transaction.Transaction; 14 | import org.teasoft.honey.osql.core.BeeFactory; 15 | import org.teasoft.honey.osql.core.ConditionImpl; 16 | import org.teasoft.honey.osql.core.SessionFactory; 17 | import org.teasoft.orm.compare.InitData; 18 | import org.teasoft.orm.compare.model.Orders; 19 | import org.teasoft.orm.compare.service.OrdersService; 20 | 21 | import com.alibaba.druid.pool.DruidDataSource; 22 | 23 | /** 24 | * @author Kingstar 25 | * @since 1.8 26 | */ 27 | public class BeeOrdersService implements OrdersService { 28 | 29 | private int createSize; 30 | 31 | static { 32 | DruidDataSource dataSource; 33 | dataSource = new DruidDataSource(); 34 | dataSource.setUrl("jdbc:mysql://localhost:3306/pro?characterEncoding=UTF-8"); 35 | dataSource.setUsername("root"); 36 | dataSource.setPassword(""); 37 | try { 38 | dataSource.init(); 39 | } catch (Exception e) { 40 | e.printStackTrace(); 41 | } 42 | 43 | BeeFactory.getInstance().setDataSource(dataSource); 44 | } 45 | 46 | private SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); 47 | 48 | @Override 49 | public List getOrdersList(int from, int pageSize) { 50 | // List list=suidRich.select(new Orders(), 700000, 2); 51 | List list = suidRich.select(new Orders(), from, pageSize); 52 | return list; 53 | } 54 | 55 | @Override 56 | public void insertBatch() { 57 | Orders array[] = InitData.getOrdersArray(createSize); 58 | // int num = suidRich.insert(array, 10000); 59 | int num = suidRich.insert(array); 60 | System.out.println("insert " + num + " record(s)!"); 61 | } 62 | 63 | @Override 64 | public void insertOne() { 65 | int num = suidRich.insert(InitData.getOneOrders()); 66 | System.out.println("insert " + num + " record(s)!"); 67 | } 68 | 69 | @Override 70 | public Orders updateTotalByIdAndGet(double num, long id) { 71 | Transaction transaction = SessionFactory.getTransaction(); 72 | Orders orders = null; 73 | Orders orders1 = null; 74 | //模拟:total涨100,完成后查询最新的数额 75 | transaction.begin(); 76 | orders = new Orders(); 77 | orders.setId(id); 78 | Condition condition = new ConditionImpl(); 79 | condition.setAdd("total", num); 80 | suidRich.update(orders, "total", condition); //total=total+100 81 | 82 | orders1 = suidRich.selectOne(orders); 83 | 84 | transaction.commit(); 85 | 86 | return orders1; 87 | } 88 | 89 | @Override 90 | public void setCreateSize(int size) { 91 | createSize = size; 92 | } 93 | 94 | //other 95 | public int deleteOrdersById(long id) { 96 | SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich(); 97 | return suidRich.deleteById(Orders.class, id); 98 | } 99 | 100 | } 101 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/model/Orders.java: -------------------------------------------------------------------------------- 1 | package org.teasoft.orm.compare.model; 2 | 3 | import java.io.Serializable; 4 | import java.math.BigDecimal; 5 | import java.sql.Timestamp; 6 | 7 | /** 8 | *@author Honey 9 | *Create on 2020-03-02 16:36:20 10 | */ 11 | public class Orders implements Serializable { 12 | 13 | private static final long serialVersionUID = 1592204269178L; 14 | 15 | private Long id; 16 | private String userid; 17 | private String name; 18 | private BigDecimal total; 19 | private String remark; 20 | private String sequence; 21 | 22 | public Long getId() { 23 | return id; 24 | } 25 | 26 | public void setId(Long id) { 27 | this.id = id; 28 | } 29 | 30 | public String getUserid() { 31 | return userid; 32 | } 33 | 34 | public void setUserid(String userid) { 35 | this.userid = userid; 36 | } 37 | 38 | public String getName() { 39 | return name; 40 | } 41 | 42 | public void setName(String name) { 43 | this.name = name; 44 | } 45 | 46 | public BigDecimal getTotal() { 47 | return total; 48 | } 49 | 50 | public void setTotal(BigDecimal total) { 51 | this.total = total; 52 | } 53 | 54 | public String getRemark() { 55 | return remark; 56 | } 57 | 58 | public void setRemark(String remark) { 59 | this.remark = remark; 60 | } 61 | 62 | public String getSequence() { 63 | return sequence; 64 | } 65 | 66 | public void setSequence(String sequence) { 67 | this.sequence = sequence; 68 | } 69 | 70 | public String toString(){ 71 | StringBuffer str=new StringBuffer(); 72 | str.append("Orders["); 73 | str.append("id=").append(id); 74 | str.append(",userid=").append(userid); 75 | str.append(",name=").append(name); 76 | str.append(",total=").append(total); 77 | str.append(",remark=").append(remark); 78 | str.append(",sequence=").append(sequence); 79 | str.append("]"); 80 | return str.toString(); 81 | } 82 | } -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/mybatis/dao/OrdersDao.java: -------------------------------------------------------------------------------- 1 | package org.teasoft.orm.compare.mybatis.dao; 2 | 3 | import java.util.List; 4 | 5 | import org.teasoft.orm.compare.model.Orders; 6 | 7 | public interface OrdersDao { 8 | public List getOrdersList(int from, int pageSize); 9 | 10 | int insertBatch(List ordersList); 11 | 12 | int insert(Orders orders); 13 | 14 | public Orders updateTotalByIdAndGet(double num, long id); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/mybatis/dao/OrdersMapper.java: -------------------------------------------------------------------------------- 1 | package org.teasoft.orm.compare.mybatis.dao; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Insert; 6 | import org.apache.ibatis.annotations.Param; 7 | import org.apache.ibatis.annotations.Select; 8 | import org.apache.ibatis.annotations.Update; 9 | import org.teasoft.orm.compare.model.Orders; 10 | 11 | public interface OrdersMapper { 12 | 13 | @Select("SELECT id,userid,name,total,createtime,remark,sequence,abc,updatetime FROM orders limit #{from}, #{pageSize}") 14 | public List getOrdersList(@Param("pageSize") int pageSize); 15 | 16 | @Insert({ 17 | "" 23 | }) 24 | int insertBatch(List ordersList); 25 | 26 | @Insert("INSERT INTO orders(id,userid,name,total,remark,sequence) VALUES (#{id},#{userid},#{name},#{total},#{remark},#{sequence})") 27 | int insert(Orders orders); 28 | 29 | @Select("select id,userid,name,total,remark,sequence from orders where id=#{id} ") 30 | public Orders selectById(@Param("id") long id); 31 | 32 | @Update("update orders set total=total+#{num} where id=#{id}") 33 | public void updateTotalById(@Param("num") double num, @Param("id") long id); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/mybatis/dao/impl/OrdersDaoImpl.java: -------------------------------------------------------------------------------- 1 | package org.teasoft.orm.compare.mybatis.dao.impl; 2 | 3 | import java.util.HashMap; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import javax.sql.DataSource; 8 | 9 | import org.apache.ibatis.mapping.Environment; 10 | import org.apache.ibatis.session.Configuration; 11 | import org.apache.ibatis.session.SqlSession; 12 | import org.apache.ibatis.session.SqlSessionFactory; 13 | import org.apache.ibatis.session.SqlSessionFactoryBuilder; 14 | import org.apache.ibatis.transaction.TransactionFactory; 15 | import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; 16 | import org.teasoft.orm.compare.model.Orders; 17 | import org.teasoft.orm.compare.mybatis.dao.OrdersDao; 18 | import org.teasoft.orm.compare.mybatis.dao.OrdersMapper; 19 | 20 | public class OrdersDaoImpl implements OrdersDao { 21 | 22 | SqlSessionFactory sqlSessionFactory; 23 | 24 | public OrdersDaoImpl(DataSource dataSource) { 25 | initDs(dataSource); 26 | } 27 | 28 | private void initDs(DataSource dataSource) { 29 | TransactionFactory transactionFactory = new JdbcTransactionFactory(); 30 | Environment environment = new Environment("development", transactionFactory, dataSource); 31 | Configuration configuration = new Configuration(environment); 32 | configuration.addMapper(OrdersMapper.class); //要设置mapper 33 | sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); 34 | } 35 | 36 | @Override 37 | public List getOrdersList(int from, int pageSize) { 38 | SqlSession sqlSession = sqlSessionFactory.openSession(false); 39 | Map map = new HashMap(); 40 | map.put("from", from); 41 | map.put("pageSize", pageSize); 42 | try { 43 | return sqlSession.selectList("org.teasoft.orm.compare.mybatis.dao.OrdersMapper.getOrdersList", map); //改了包名,就要换. 否则报错. 44 | } finally { 45 | sqlSession.close(); 46 | } 47 | } 48 | 49 | @Override 50 | public int insertBatch(List ordersList) { 51 | 52 | SqlSession sqlSession = sqlSessionFactory.openSession(true); //auto Commit 53 | try { 54 | return sqlSession.insert("org.teasoft.orm.compare.mybatis.dao.OrdersMapper.insertBatch", ordersList); 55 | } finally { 56 | sqlSession.close(); 57 | } 58 | } 59 | 60 | @Override 61 | public int insert(Orders orders) { 62 | SqlSession sqlSession = sqlSessionFactory.openSession(true); 63 | try { 64 | return sqlSession.insert("org.teasoft.orm.compare.mybatis.dao.OrdersMapper.insert", orders); 65 | } finally { 66 | sqlSession.close(); 67 | } 68 | } 69 | 70 | @Override 71 | public Orders updateTotalByIdAndGet(double num, long id) { 72 | SqlSession sqlSession = sqlSessionFactory.openSession(); 73 | try { 74 | Map map = new HashMap(); 75 | map.put("num", num); 76 | map.put("id", id); 77 | sqlSession.update("org.teasoft.orm.compare.mybatis.dao.OrdersMapper.updateTotalById", map); 78 | Orders result = sqlSession.selectOne("org.teasoft.orm.compare.mybatis.dao.OrdersMapper.selectById", id); 79 | sqlSession.commit(); 80 | // sqlSession.commit(true); 81 | return result; 82 | } finally { 83 | sqlSession.close(); 84 | } 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/mybatis/service/MybatisOrdersService.java: -------------------------------------------------------------------------------- 1 | package org.teasoft.orm.compare.mybatis.service; 2 | 3 | import java.util.List; 4 | 5 | import org.teasoft.orm.compare.InitData; 6 | import org.teasoft.orm.compare.model.Orders; 7 | import org.teasoft.orm.compare.mybatis.dao.OrdersDao; 8 | import org.teasoft.orm.compare.mybatis.dao.impl.OrdersDaoImpl; 9 | import org.teasoft.orm.compare.service.OrdersService; 10 | 11 | import com.alibaba.druid.pool.DruidDataSource; 12 | 13 | public class MybatisOrdersService implements OrdersService{ 14 | private int createSize; 15 | 16 | private DruidDataSource dataSource; 17 | OrdersDao dao; 18 | 19 | public MybatisOrdersService(){ 20 | dataSource = new DruidDataSource(); 21 | dataSource.setUrl("jdbc:mysql://localhost:3306/pro?characterEncoding=UTF-8"); 22 | dataSource.setUsername("root"); 23 | dataSource.setPassword(""); 24 | try { 25 | dataSource.init(); 26 | } catch (Exception e) { 27 | e.printStackTrace(); 28 | } 29 | 30 | dao = new OrdersDaoImpl(dataSource); 31 | } 32 | 33 | @Override 34 | public List getOrdersList(int from, int pageSize) { 35 | return dao.getOrdersList(from, pageSize); 36 | } 37 | 38 | @Override 39 | public void insertBatch() { 40 | int num = dao.insertBatch(InitData.getOrdersList(createSize)); 41 | System.out.println("insert " + num + " record(s)!"); 42 | } 43 | 44 | @Override 45 | public void insertOne() { 46 | int num = dao.insert(InitData.getOneOrders()); 47 | System.out.println("insert " + num + " record(s)!"); 48 | } 49 | 50 | @Override 51 | public Orders updateTotalByIdAndGet(double num, long id) { 52 | return dao.updateTotalByIdAndGet(num, id); 53 | } 54 | 55 | @Override 56 | public void setCreateSize(int size){ 57 | createSize=size; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/org/teasoft/orm/compare/service/OrdersService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016-2020 the original author.All rights reserved. 3 | * Kingstar(honeysoft@126.com) 4 | * The license,see the LICENSE file. 5 | */ 6 | 7 | package org.teasoft.orm.compare.service; 8 | 9 | import java.util.List; 10 | 11 | import org.teasoft.orm.compare.model.Orders; 12 | 13 | /** 14 | * @author Kingstar 15 | * @since 1.8 16 | */ 17 | public interface OrdersService { 18 | public List getOrdersList(int from, int pageSize); 19 | 20 | public void insertBatch(); 21 | 22 | public void insertOne(); 23 | 24 | public Orders updateTotalByIdAndGet(double num, long id); 25 | 26 | public void setCreateSize(int size); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/resources/bee.properties: -------------------------------------------------------------------------------- 1 | #mysql no dataSource type 2 | #mysql \u65e0\u6570\u636e\u6e90,\u76f4\u8fde\u65b9\u5f0f.\u914d\u7f6edataSource\u4e5f\u53ef\u5f15\u7528 3 | #\u4f7f\u7528xml\u914d\u7f6e\u7b49\u5176\u5b83\u6570\u636e\u6e90\u65f6\uff0cbee.properties\u91cc\u914d\u7f6e\u7684\u9a71\u52a8\u4fe1\u606f\u5c06\u4e0d\u4f1a\u4f7f\u7528\u3002 4 | #\u6ca1\u6709\u4f7f\u7528\u6570\u636e\u6e90\u65f6\uff0c\u4f1a\u4f7f\u7528\u8fd9\u91cc\u7684\u914d\u7f6e\u3002 5 | bee.databaseName=mysql 6 | 7 | #bee.db.driverName = com.mysql.jdbc.Driver 8 | #bee.db.url =jdbc:mysql://localhost:3306/bee?characterEncoding=UTF-8 9 | #bee.db.username = root 10 | #bee.db.password = 11 | 12 | # since v1.8 13 | #systemLogger,fileLogger,log4j,... 14 | bee.log.loggerType=systemLogger 15 | 16 | #bee.osql.showSQL=true 17 | # since v1.8 18 | bee.osql.showSQL.showType=false 19 | bee.osql.showSQL.showExecutableSql=false 20 | # since v1.7.0 21 | bee.osql.showSQL.donotPrint.currentDate=false 22 | bee.osql.moreTable.columnListWithStar=false 23 | 24 | 25 | # since v1.7.2 26 | bee.osql.date.format=yyyy-MM-dd HH:mm:ss 27 | bee.osql.log.donotPrint.level=false 28 | # since v1.7.2. It is not allowed delete whole records in one table.Just enable in Object Oriented way. 29 | bee.osql.donot.allowed.deleteWholeRecords=true 30 | # since v1.7.2. It is not allowed update whole records in one table.Just enable in Object Oriented way. 31 | bee.osql.donot.allowed.updateWholeRecords=true 32 | 33 | #entity class name->table name, formatter: packagename.ClassName:tableName,packagename.ClassName:tableName 34 | #Separate multiple options with comma. Package name can be omitted if they are not confused. 35 | #Just config for special 36 | #bee.osql.name.mapping.entity2table=User2:temp_user,com.abc.user.User:temp_user 37 | 38 | 39 | #\u6700\u5927\u6279\u5904\u7406\u6570 batch size default is 10000 40 | bee.osql.select.batchSize=1000 41 | #\u67e5\u8be2\u7ed3\u679c\u76f4\u63a5\u8fd4\u56deJson\u662f\u5426\u5ffd\u7565null 42 | bee.osql.selectJson.ignoreNull=true 43 | #\u67e5\u8be2\u7ed3\u679c\u76f4\u63a5\u8fd4\u56deJson\u4e2d, timestamp\u662f\u5426\u7528\u6beb\u79d2\u8868\u793a 44 | bee.osql.selectJson.timestamp.withMillisecond=true 45 | bee.osql.selectJson.date.withMillisecond=true 46 | bee.osql.selectJson.time.withMillisecond=false 47 | #\u67e5\u8be2\u7ed3\u679c\u8fd4\u56deList\u65f6,\u662f\u5426\u5c06null\u8f6c\u4e3a"" 48 | bee.osql.select.returnStringList.nullToEmptyString=false 49 | #bee.osql.select.resultSparator=[#Bee#] delete 50 | 51 | #since 1.7.2 52 | #default implement translate type. 1 : order_no<-->orderNo(DB<-->Java), 2: ORDER_NO<-->orderNo(DB<-->Java), 3: original 53 | #if want to use other naming rule, you can define a new class implements NameTranslate 54 | #default value is :1 55 | bee.osql.naming.translate.type=1 56 | 57 | #\u50cforacle,\u5982\u5b57\u6bb5\u540d\u7b49\u539f\u6765\u90fd\u662f\u5927\u5199,\u53ef\u5148\u8f6c\u6210\u5c0f\u5199\u518d\u8f6c\u6362\u4e3ajava\u547d\u540d.\u8fd9\u6837java\u547d\u540d\u65f6\u5c31\u4e0d\u662f\u5168\u662f\u5927\u5199. 58 | #default: to LowerCase before. \u9ed8\u8ba4\u662f\u5148\u8f6c\u5c0f\u5199,\u56e0\u4e3a\u5982\u4e0d\u8f6c,DB\u6709\u7528\u5927\u5199\u7684\u65f6\u5019\u4f1a\u51fa\u9519 59 | bee.osql.dbNaming.toLowerCaseBefore=true 60 | 61 | #\u6700\u5927\u8fd4\u56de\u7ed3\u679c\u6570 #Not enabled 62 | #bee.osql.select.maxResultSize=100 63 | 64 | # since v1.7.0 65 | #inner join type. use "join .. on" when true, or use "where ...=".Just there is one sub table, it is enable. 66 | bee.osql.sqlGenerate.moreTableSelect.2tablesWithJoinOnStyle=false 67 | 68 | #cache=======================start 69 | #\u7f13\u5b58\u7c7b\u578b 70 | #bee.osql.cache.type=FIFO 71 | #\u7f13\u5b58\u96c6\u6570\u636e\u91cf\u6570\u76ee 72 | bee.osql.cache.map.size=1000 73 | #resultset\u8d85\u8fc7\u4e00\u5b9a\u7684\u503c\u5c06\u4e0d\u4f1a\u653e\u7f13\u5b58 74 | bee.osql.cache.work.resultSet.size=300 75 | #\u7f13\u5b58\u4fdd\u5b58\u65f6\u95f4(\u6beb\u79d2 ms) 76 | bee.osql.cache.timeout=180000 77 | #\u68c0\u6d4b\u5230\u8d85\u65f6,\u8d85\u8fc7\u8fd9\u4e2a\u4f7f\u7528\u6bd4\u4f8b\u5219\u987a\u4fbf\u8d77\u7ebf\u7a0b\u6e05\u9664\u7f13\u5b58 78 | bee.osql.cache.startDeleteCache.rate=0.6 79 | #\u7f13\u5b58\u5bb9\u91cf\u4f7f\u7528\u7387;\u6dfb\u52a0\u7f13\u5b58,\u68c0\u6d4b\u8fbe\u5230\u8be5\u4f7f\u7528\u7387\u5219\u6e05\u9664\u4e00\u5b9a\u6bd4\u4f8b\u7f13\u5b58 80 | bee.osql.cache.fullUsed.rate=0.8 81 | #\u6dfb\u52a0\u7f13\u5b58,\u68c0\u6d4b\u5230\u7f13\u5b58\u5bb9\u91cf\u5feb\u6ee1\u65f6,\u5220\u9664\u7f13\u5b58\u6570\u7684\u6bd4\u4f8b 82 | bee.osql.cache.fullClearCache.rate=0.2 83 | 84 | #\u4ec5\u5206\u5e93\u65f6(bee.dosql.multi-DS.type=2),\u53ef\u7528\u683c\u5f0f: dsName.tableName 85 | #use table name, not entity name 86 | #\u4e0d\u7f13\u5b58\u8868\u7684\u5217\u8868, \u8868\u540d\u4e0d\u533a\u5206\u5927\u5c0f\u5199 87 | #bee.osql.cache.never=user 88 | #\u6c38\u4e45\u7f13\u5b58\u8868\u7684\u5217\u8868, \u8868\u540d\u4e0d\u533a\u5206\u5927\u5c0f\u5199 89 | #bee.osql.cache.forever=constant 90 | #\u6c38\u4e45\u7f13\u5b58,\u4f46\u6709\u66f4\u6539\u65f6\u4e5f\u4f1a\u6e05\u9664\u7f13\u5b58,\u4ee5\u4fbf\u540c\u6b65\u65b0\u7684\u503c\u5230\u7f13\u5b58. \u8868\u540d\u4e0d\u533a\u5206\u5927\u5c0f\u5199 91 | #bee.osql.cache.forever.modifySyn=para 92 | 93 | # since v1.7.2. default value is: false (use cache) 94 | #bee.osql.cache.nocache=false 95 | 96 | #cache=======================end 97 | 98 | #distributed environment 99 | bee.distribution.genid.workerid=0 100 | #1:SerialUniqueId ,2:OneTimeSnowflakeId ,3:PearFlowerId. default is 1. 101 | bee.distribution.genid.idGeneratorType=1 102 | bee.distribution.genid.forAllTableLongId=false 103 | #when forAllTableLongId=true, it woulb be disable. 104 | #bee.distribution.genid.entityList.includes=com.xxx.aa.Orders,com.xxx.bb.*,com.xxx.cc.** 105 | #bee.distribution.genid.entityList.excludes=com.xxx.aa.User,com.xxx.bb.* 106 | #tolerateSecond need >=1 107 | #bee.distribution.PearFlowerId.tolerateSecond=10 108 | #bee.distribution.PearFlowerId.useHalfWorkId=false 109 | #unit is second. 110 | #bee.distribution.PearFlowerId.switchWorkId.timeThreshold=120 111 | 112 | #----------------Notice: do not support define sql in this model. 113 | #DOSQL: Distributed Object SQL 114 | bee.dosql.multi-DS.enable=false 115 | # 1:only r/w, one master and more slave; 2:only more database (table name is same) 116 | 117 | #bee.dosql.multi-DS.defalut-DS=ds1 118 | #bee.dosql.multi-DS.type=1 119 | 120 | #when type is 1 121 | #write DB just set one db. 122 | #bee.dosql.multi-DS.writeDB=ds1 123 | #bee.dosql.multi-DS.readDB=ds2,ds3 124 | #poll:1, rand:2 125 | #bee.dosql.multi-DS.rDB.routeWay=1 126 | 127 | #when type is 2 128 | #bee.dosql.multi-DS.defalut-DS=ds1 129 | #bee.dosql.multi-DS.type=2 130 | #\u4e0d\u540cds\u7528\u5206\u53f7\u9694\u5f00 \u540c\u4e00ds\u7528\u9017\u53f7\u9694\u5f00.Different DS are separated by semicolons and the same DS by commas. 131 | #\u4ec5\u5206\u5e93\u65f6\uff0c\u4e0d\u540c\u5e93\u6709\u76f8\u540c\u7684\u8868\u540d\uff0c\u5bf9\u5e94\u7684Entity\u6240\u5728\u7684\u5305\u540d\u4e0d\u80fd\u76f8\u540c(\u82e5\u5728java\u4ee3\u7801\u4e2d\u624b\u52a8\u6307\u5b9ads,\u5219\u4f1a\u6c61\u67d3\u4ee3\u7801) 132 | #bee.dosql.multi-DS.match.entityClassPath=ds2:com.xxx.aa.User,com.xxx.bb.*,com.xxx.cc.**;ds3:com.xxx.dd.User 133 | #bee.dosql.multi-DS.match.table=ds2:user 134 | -------------------------------------------------------------------------------- /src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/main/resources/orders.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Navicat MySQL Data Transfer 3 | 4 | Source Server : localhost_3306 5 | Source Server Version : 50624 6 | Source Host : localhost:3306 7 | Source Database : pro 8 | 9 | Target Server Type : MYSQL 10 | Target Server Version : 50624 11 | File Encoding : 65001 12 | 13 | Date: 2020-09-13 19:29:16 14 | */ 15 | 16 | SET FOREIGN_KEY_CHECKS=0; 17 | 18 | -- ---------------------------- 19 | -- Table structure for `orders` 20 | -- ---------------------------- 21 | DROP TABLE IF EXISTS `orders`; 22 | CREATE TABLE `orders` ( 23 | `id` bigint(20) NOT NULL, 24 | `userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 25 | `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, 26 | `total` decimal(12,2) DEFAULT NULL, 27 | `createtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP, 28 | `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, 29 | `sequence` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, 30 | `abc` varchar(20) DEFAULT NULL, 31 | `updatetime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 32 | PRIMARY KEY (`id`) 33 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 34 | 35 | -- ---------------------------- 36 | -- Records of orders 37 | -- ---------------------------- 38 | -------------------------------------------------------------------------------- /src/main/resources/test-bee-log.txt: -------------------------------------------------------------------------------- 1 | Bee 2 | (clear) 3 | First: 4 | Now test the ORM: Bee 5 | Now it is 1 time. 6 | insert 1 record(s)! 7 | insert 5000 record(s)! 8 | ----test batch insert: 880 ms 9 | ----test select 20 times: 21 ms 10 | ----test update and select 20 times: 1081 ms 11 | 880 21 1081 12 | 13 | Now it is 2 time. 14 | insert 1 record(s)! 15 | insert 10000 record(s)! 16 | ----test batch insert: 720 ms 17 | ----test select 50 times: 20 ms 18 | ----test update and select 50 times: 70 ms 19 | 720 20 70 20 | 21 | Now it is 3 time. 22 | insert 1 record(s)! 23 | insert 20000 record(s)! 24 | ----test batch insert: 620 ms 25 | ----test select 100 times: 46 ms 26 | ----test update and select 100 times: 80 ms 27 | 620 46 80 28 | 29 | Now it is 4 time. 30 | insert 1 record(s)! 31 | insert 50000 record(s)! 32 | ----test batch insert: 1420 ms 33 | ----test select 200 times: 51 ms 34 | ----test update and select 200 times: 140 ms 35 | 1420 51 140 36 | 37 | 38 | 39 | Second: 40 | Now test the ORM: Bee 41 | Now it is 1 time. 42 | insert 1 record(s)! 43 | insert 5000 record(s)! 44 | ----test batch insert: 359 ms 45 | ----test select 20 times: 16 ms 46 | ----test update and select 20 times: 1076 ms 47 | 359 16 1076 48 | 49 | Now it is 2 time. 50 | insert 1 record(s)! 51 | insert 10000 record(s)! 52 | ----test batch insert: 358 ms 53 | ----test select 50 times: 78 ms 54 | ----test update and select 50 times: 78 ms 55 | 358 78 78 56 | 57 | Now it is 3 time. 58 | insert 1 record(s)! 59 | insert 20000 record(s)! 60 | ----test batch insert: 484 ms 61 | ----test select 100 times: 32 ms 62 | ----test update and select 100 times: 78 ms 63 | 484 32 78 64 | 65 | Now it is 4 time. 66 | insert 1 record(s)! 67 | insert 50000 record(s)! 68 | ----test batch insert: 1248 ms 69 | ----test select 200 times: 16 ms 70 | ----test update and select 200 times: 173 ms 71 | 1248 16 173 72 | 73 | 74 | 75 | 76 | Third: 77 | Now test the ORM: Bee 78 | Now it is 1 time. 79 | insert 1 record(s)! 80 | insert 5000 record(s)! 81 | ----test batch insert: 348 ms 82 | ----test select 20 times: 15 ms 83 | ----test update and select 20 times: 1110 ms 84 | 348 15 1110 85 | 86 | Now it is 2 time. 87 | insert 1 record(s)! 88 | insert 10000 record(s)! 89 | ----test batch insert: 297 ms 90 | ----test select 50 times: 78 ms 91 | ----test update and select 50 times: 62 ms 92 | 297 78 62 93 | 94 | Now it is 3 time. 95 | insert 1 record(s)! 96 | insert 20000 record(s)! 97 | ----test batch insert: 546 ms 98 | ----test select 100 times: 79 ms 99 | ----test update and select 100 times: 94 ms 100 | 546 79 94 101 | 102 | Now it is 4 time. 103 | insert 1 record(s)! 104 | insert 50000 record(s)! 105 | ----test batch insert: 1279 ms 106 | ----test select 200 times: 48 ms 107 | ----test update and select 200 times: 171 ms 108 | 1279 48 171 109 | 110 | 111 | 112 | (clear) 113 | 10w test 3 times: 114 | 115 | 116 | Now test the ORM: Bee 117 | Now it is 5 time. 118 | insert 1 record(s)! 119 | insert 100000 record(s)! 120 | ----test batch insert: 4700 ms 121 | ----test select 500 times: 67 ms 122 | ----test update and select 500 times: 31600 ms 123 | 4700 67 31600 124 | 125 | 126 | Now test the ORM: Bee 127 | Now it is 5 time. 128 | insert 1 record(s)! 129 | insert 100000 record(s)! 130 | ----test batch insert: 4000 ms 131 | ----test select 500 times: 61 ms 132 | ----test update and select 500 times: 31240 ms 133 | 4000 61 31240 134 | 135 | 136 | 137 | Now test the ORM: Bee 138 | Now it is 5 time. 139 | insert 1 record(s)! 140 | insert 100000 record(s)! 141 | ----test batch insert: 3470 ms 142 | ----test select 500 times: 44 ms 143 | ----test update and select 500 times: 31688 ms 144 | 3470 44 31688 145 | 146 | -------------------------------------------------------------------------------- /src/main/resources/test-mybatis-log.txt: -------------------------------------------------------------------------------- 1 | MyBatis 2 | (clear) 3 | First: 4 | Now test the ORM: Mybatis 5 | Now it is 1 time. 6 | insert 1 record(s)! 7 | insert 5000 record(s)! 8 | ----test batch insert: 1513 ms 9 | ----test select 20 times: 99 ms 10 | ----test update and select 20 times: 1170 ms 11 | 1513 99 1170 12 | 13 | Now it is 2 time. 14 | insert 1 record(s)! 15 | insert 10000 record(s)! 16 | ----test batch insert: 1092 ms 17 | ----test select 50 times: 313 ms 18 | ----test update and select 50 times: 31 ms 19 | 1092 313 31 20 | 21 | Now it is 3 time. 22 | insert 1 record(s)! 23 | insert 20000 record(s)! 24 | ----test batch insert: 1466 ms 25 | ----test select 100 times: 1795 ms 26 | ----test update and select 100 times: 79 ms 27 | 1466 1795 79 28 | 29 | Now it is 4 time. 30 | insert 1 record(s)! 31 | insert 50000 record(s)! 32 | ----test batch insert: 1700 ms 33 | ----test select 200 times: 2232 ms 34 | ----test update and select 200 times: 146 ms 35 | 1700 2232 146 36 | 37 | 38 | 39 | 40 | Second: 41 | Now test the ORM: Mybatis 42 | Now it is 1 time. 43 | insert 1 record(s)! 44 | insert 5000 record(s)! 45 | ----test batch insert: 1045 ms 46 | ----test select 20 times: 423 ms 47 | ----test update and select 20 times: 1092 ms 48 | 1045 423 1092 49 | 50 | Now it is 2 time. 51 | insert 1 record(s)! 52 | insert 10000 record(s)! 53 | ----test batch insert: 577 ms 54 | ----test select 50 times: 655 ms 55 | ----test update and select 50 times: 33 ms 56 | 577 655 33 57 | 58 | Now it is 3 time. 59 | insert 1 record(s)! 60 | insert 20000 record(s)! 61 | ----test batch insert: 812 ms 62 | ----test select 100 times: 1622 ms 63 | ----test update and select 100 times: 79 ms 64 | 812 1622 79 65 | 66 | Now it is 4 time. 67 | insert 1 record(s)! 68 | insert 50000 record(s)! 69 | ----test batch insert: 1923 ms 70 | ----test select 200 times: 2310 ms 71 | ----test update and select 200 times: 141 ms 72 | 1923 2310 141 73 | 74 | 75 | 76 | 77 | Third: 78 | Now test the ORM: Mybatis 79 | Now it is 1 time. 80 | insert 1 record(s)! 81 | insert 5000 record(s)! 82 | ----test batch insert: 1021 ms 83 | ----test select 20 times: 421 ms 84 | ----test update and select 20 times: 1170 ms 85 | 1021 421 1170 86 | 87 | Now it is 2 time. 88 | insert 1 record(s)! 89 | insert 10000 record(s)! 90 | ----test batch insert: 470 ms 91 | ----test select 50 times: 670 ms 92 | ----test update and select 50 times: 41 ms 93 | 470 670 41 94 | 95 | Now it is 3 time. 96 | insert 1 record(s)! 97 | insert 20000 record(s)! 98 | ----test batch insert: 1600 ms 99 | ----test select 100 times: 1221 ms 100 | ----test update and select 100 times: 81 ms 101 | 1600 1221 81 102 | 103 | Now it is 4 time. 104 | insert 1 record(s)! 105 | insert 50000 record(s)! 106 | ----test batch insert: 1850 ms 107 | ----test select 200 times: 2341 ms 108 | ----test update and select 200 times: 151 ms 109 | 1850 2341 151 110 | 111 | 112 | 113 | (clear) 114 | 10w test 3 times: 115 | 116 | Exception Packet for query is too large 117 | 118 | Now test the ORM: Mybatis 119 | Now it is 5 time. 120 | insert 1 record(s)! 121 | ----test batch insert: 0 ms -N/A 122 | ----test select 500 times: 6160 ms 123 | ----test update and select 500 times: 32404 ms 124 | 0 6160 32404 125 | 126 | 127 | Now test the ORM: Mybatis 128 | Now it is 5 time. 129 | insert 1 record(s)! 130 | ----test batch insert: 0 ms 131 | ----test select 500 times: 6260 ms 132 | ----test update and select 500 times: 32891 ms 133 | 0 6260 32891 134 | 135 | 136 | Now test the ORM: Mybatis 137 | Now it is 5 time. 138 | insert 1 record(s)! 139 | ----test batch insert: 0 ms 140 | ----test select 500 times: 6230 ms 141 | ----test update and select 500 times: 31171 ms 142 | 0 6230 31171 143 | 144 | --------------------------------------------------------------------------------