Skip to content

Commit 3fb4ab1

Browse files
committed
Merge branch 'develop'
2 parents d4b244c + 7edaf7d commit 3fb4ab1

File tree

7 files changed

+56
-10
lines changed

7 files changed

+56
-10
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ Country代码:
9292
<dependency>
9393
<groupId>tk.mybatis</groupId>
9494
<artifactId>mapper</artifactId>
95-
<version>3.3.4</version>
95+
<version>3.3.5</version>
9696
</dependency>
9797
```
9898

@@ -108,7 +108,13 @@ http://repo1.maven.org/maven2/javax/persistence/persistence-api/1.0/
108108

109109
##[更新日志](http://git.oschina.net/free/Mapper/blob/master/wiki/Changelog.md)
110110

111-
##最新版本3.3.4 - 2016-01-05
111+
##最新版本3.3.5 - 2016-02-16
112+
113+
* `Example`增加对动态表名支持,通过`setTableName`设置表名
114+
* 在example相关的两个`update`方法中,参数为实体类和`Example`,这个方法只能通过`Example`来设置动态表名,不支持通过实体设置动态表名
115+
* 优化两个`select count`查询,当表只有一个主键的时候,使用`select count(pk)`,其他时候使用`select count(*)`
116+
117+
###3.3.4 - 2016-01-05
112118

113119
* 解决insertList的bug#86
114120
* `Example`构造方法增加`notNull`参数,默认`false`,允许值为`null`,值为`null`的时候不加入到条件中。

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
<groupId>tk.mybatis</groupId>
3030
<artifactId>mapper</artifactId>
31-
<version>3.3.4</version>
31+
<version>3.3.5</version>
3232
<packaging>jar</packaging>
3333

3434
<name>mapper</name>

src/main/java/tk/mybatis/mapper/entity/Example.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
*
3737
* @author liuzh
3838
*/
39-
public class Example {
39+
public class Example implements IDynamicTableName {
4040
protected String orderByClause;
4141

4242
protected boolean distinct;
@@ -54,7 +54,8 @@ public class Example {
5454
protected EntityTable table;
5555
//属性和列对应
5656
protected Map<String, EntityColumn> propertyMap;
57-
57+
//动态表名
58+
protected String tableName;
5859
/**
5960
* 默认exists为true
6061
*
@@ -170,6 +171,20 @@ public void clear() {
170171
distinct = false;
171172
}
172173

174+
/**
175+
* 设置表名
176+
*
177+
* @param tableName
178+
*/
179+
public void setTableName(String tableName) {
180+
this.tableName = tableName;
181+
}
182+
183+
@Override
184+
public String getDynamicTableName() {
185+
return tableName;
186+
}
187+
173188
protected abstract static class GeneratedCriteria {
174189
protected List<Criterion> criteria;
175190
//字段是否必须存在

src/main/java/tk/mybatis/mapper/mapperhelper/SqlHelper.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,24 @@ public static String selectAllColumns(Class<?> entityClass) {
251251
return sql.toString();
252252
}
253253

254+
/**
255+
* select count(x)
256+
*
257+
* @param entityClass
258+
* @return
259+
*/
260+
public static String selectCount(Class<?> entityClass) {
261+
StringBuilder sql = new StringBuilder();
262+
sql.append("SELECT ");
263+
Set<EntityColumn> pkColumns = EntityHelper.getPKColumns(entityClass);
264+
if (pkColumns.size() == 1) {
265+
sql.append("COUNT(").append(pkColumns.iterator().next().getColumn()).append(") ");
266+
} else {
267+
sql.append("COUNT(*) ");
268+
}
269+
return sql.toString();
270+
}
271+
254272
/**
255273
* from tableName - 动态表名
256274
*

src/main/java/tk/mybatis/mapper/provider/ExampleProvider.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ public ExampleProvider(Class<?> mapperClass, MapperHelper mapperHelper) {
4848
*/
4949
public String selectCountByExample(MappedStatement ms) {
5050
Class<?> entityClass = getEntityClass(ms);
51-
StringBuilder sql = new StringBuilder("SELECT COUNT(*) FROM ");
52-
sql.append(SqlHelper.getDynamicTableName(entityClass, tableName(entityClass)));
51+
StringBuilder sql = new StringBuilder();
52+
sql.append(SqlHelper.selectCount(entityClass));
53+
sql.append(SqlHelper.fromTable(entityClass, tableName(entityClass)));
5354
sql.append(SqlHelper.exampleWhereClause());
5455
return sql.toString();
5556
}
@@ -108,7 +109,7 @@ public String selectByExampleAndRowBounds(MappedStatement ms) {
108109
public String updateByExampleSelective(MappedStatement ms) {
109110
Class<?> entityClass = getEntityClass(ms);
110111
StringBuilder sql = new StringBuilder();
111-
sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass), "record"));
112+
sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass), "example"));
112113
sql.append(SqlHelper.updateSetColumns(entityClass, "record", true, isNotEmpty()));
113114
sql.append(SqlHelper.updateByExampleWhereClause());
114115
return sql.toString();
@@ -123,7 +124,7 @@ public String updateByExampleSelective(MappedStatement ms) {
123124
public String updateByExample(MappedStatement ms) {
124125
Class<?> entityClass = getEntityClass(ms);
125126
StringBuilder sql = new StringBuilder();
126-
sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass), "record"));
127+
sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass), "example"));
127128
sql.append(SqlHelper.updateSetColumns(entityClass, "record", false, false));
128129
sql.append(SqlHelper.updateByExampleWhereClause());
129130
return sql.toString();

src/main/java/tk/mybatis/mapper/provider/base/BaseSelectProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public String selectByPrimaryKey(MappedStatement ms) {
110110
public String selectCount(MappedStatement ms) {
111111
Class<?> entityClass = getEntityClass(ms);
112112
StringBuilder sql = new StringBuilder();
113-
sql.append("SELECT COUNT(*) ");
113+
sql.append(SqlHelper.selectCount(entityClass));
114114
sql.append(SqlHelper.fromTable(entityClass, tableName(entityClass)));
115115
sql.append(SqlHelper.whereAllIfColumns(entityClass, isNotEmpty()));
116116
return sql.toString();

wiki/Changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#更新日志
22

3+
##3.3.5 - 2016-02-16
4+
5+
* `Example`增加对动态表名支持,通过`setTableName`设置表名
6+
* 在example相关的两个`update`方法中,参数为实体类和`Example`,这个方法只能通过`Example`来设置动态表名,不支持通过实体设置动态表名
7+
* 优化两个`select count`查询,当表只有一个主键的时候,使用`select count(pk)`,其他时候使用`select count(*)`
8+
39
##3.3.4 - 2016-01-05
410

511
* 解决insertList的bug#86

0 commit comments

Comments
 (0)