Skip to content

Commit 5f96612

Browse files
committed
Simplify MyBatis3Utils
1 parent 29d77bb commit 5f96612

File tree

3 files changed

+63
-42
lines changed

3 files changed

+63
-42
lines changed

src/main/java/org/mybatis/dynamic/sql/select/CountDSLCompleter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* client code look a bit cleaner.
2828
*
2929
* <p>This function is intended to by used in conjunction with a utility method like
30-
* {@link MyBatis3Utils#count(ToLongFunction, CountDSL, CountDSLCompleter)}
30+
* {@link MyBatis3Utils#countFrom(ToLongFunction, CountDSL, CountDSLCompleter)}
3131
*
3232
* <p>For example, you can create mapper interface methods like this:
3333
*

src/main/java/org/mybatis/dynamic/sql/util/mybatis3/MyBatis3Utils.java

Lines changed: 61 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,11 @@
1717

1818
import java.util.Collection;
1919
import java.util.List;
20-
import java.util.Optional;
2120
import java.util.function.Function;
2221
import java.util.function.ToIntFunction;
2322
import java.util.function.ToLongFunction;
2423
import java.util.function.UnaryOperator;
2524

26-
import org.jetbrains.annotations.NotNull;
27-
import org.jetbrains.annotations.Nullable;
2825
import org.mybatis.dynamic.sql.BasicColumn;
2926
import org.mybatis.dynamic.sql.SqlBuilder;
3027
import org.mybatis.dynamic.sql.SqlTable;
@@ -53,86 +50,110 @@
5350
public class MyBatis3Utils {
5451
private MyBatis3Utils() {}
5552

53+
public static SelectStatementProvider countFrom(SqlTable table, CountDSLCompleter completer) {
54+
return countFrom(SqlBuilder.countFrom(table), completer);
55+
}
56+
5657
public static long countFrom(ToLongFunction<SelectStatementProvider> mapper,
5758
SqlTable table, CountDSLCompleter completer) {
58-
return countFrom(mapper, SqlBuilder.countFrom(table), completer);
59+
return mapper.applyAsLong(countFrom(table, completer));
60+
}
61+
62+
public static SelectStatementProvider countFrom(CountDSL<SelectModel> start, CountDSLCompleter completer) {
63+
return completer.apply(start)
64+
.build()
65+
.render(RenderingStrategies.MYBATIS3);
5966
}
6067

6168
public static long countFrom(ToLongFunction<SelectStatementProvider> mapper,
6269
CountDSL<SelectModel> start, CountDSLCompleter completer) {
63-
return mapper.applyAsLong(completer.apply(start).build().render(RenderingStrategies.MYBATIS3));
70+
return mapper.applyAsLong(countFrom(start, completer));
71+
}
72+
73+
public static DeleteStatementProvider deleteFrom(SqlTable table, DeleteDSLCompleter completer) {
74+
return completer.apply(SqlBuilder.deleteFrom(table))
75+
.build()
76+
.render(RenderingStrategies.MYBATIS3);
6477
}
6578

6679
public static int deleteFrom(ToIntFunction<DeleteStatementProvider> mapper,
6780
SqlTable table, DeleteDSLCompleter completer) {
68-
return mapper.applyAsInt(
69-
completer.apply(SqlBuilder.deleteFrom(table))
70-
.build()
71-
.render(RenderingStrategies.MYBATIS3));
81+
return mapper.applyAsInt(deleteFrom(table, completer));
7282
}
7383

84+
public static <R> InsertStatementProvider<R> insert(R record, SqlTable table, UnaryOperator<InsertDSL<R>> completer) {
85+
return completer.apply(SqlBuilder.insert(record).into(table))
86+
.build()
87+
.render(RenderingStrategies.MYBATIS3);
88+
}
89+
7490
public static <R> int insert(ToIntFunction<InsertStatementProvider<R>> mapper, R record,
7591
SqlTable table, UnaryOperator<InsertDSL<R>> completer) {
76-
return mapper.applyAsInt(completer.apply(
77-
SqlBuilder.insert(record).into(table)).build().render(RenderingStrategies.MYBATIS3));
92+
return mapper.applyAsInt(insert(record, table, completer));
7893
}
7994

95+
public static <R> MultiRowInsertStatementProvider<R> insertMultiple(Collection<R> records, SqlTable table,
96+
UnaryOperator<MultiRowInsertDSL<R>> completer) {
97+
return completer.apply(SqlBuilder.insertMultiple(records).into(table))
98+
.build()
99+
.render(RenderingStrategies.MYBATIS3);
100+
}
101+
80102
public static <R> int insertMultiple(ToIntFunction<MultiRowInsertStatementProvider<R>> mapper,
81103
Collection<R> records, SqlTable table, UnaryOperator<MultiRowInsertDSL<R>> completer) {
82-
return mapper.applyAsInt(completer.apply(
83-
SqlBuilder.insertMultiple(records).into(table)).build().render(RenderingStrategies.MYBATIS3));
104+
return mapper.applyAsInt(insertMultiple(records, table, completer));
84105
}
85106

86-
public static <R> List<R> selectDistinct(Function<SelectStatementProvider, List<R>> mapper,
87-
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
88-
return selectDistinct(mapper, SqlBuilder.selectDistinct(selectList).from(table), completer);
107+
public static SelectStatementProvider select(BasicColumn[] selectList, SqlTable table,
108+
SelectDSLCompleter completer) {
109+
return select(SqlBuilder.select(selectList).from(table), completer);
110+
}
111+
112+
public static SelectStatementProvider select(QueryExpressionDSL<SelectModel> start,
113+
SelectDSLCompleter completer) {
114+
return completer.apply(start)
115+
.build()
116+
.render(RenderingStrategies.MYBATIS3);
117+
}
118+
119+
public static SelectStatementProvider selectDistinct(BasicColumn[] selectList, SqlTable table,
120+
SelectDSLCompleter completer) {
121+
return select(SqlBuilder.selectDistinct(selectList).from(table), completer);
89122
}
90123

91124
public static <R> List<R> selectDistinct(Function<SelectStatementProvider, List<R>> mapper,
92-
QueryExpressionDSL<SelectModel> start, SelectDSLCompleter completer) {
93-
return mapper.apply(completer.apply(start).build().render(RenderingStrategies.MYBATIS3));
125+
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
126+
return mapper.apply(selectDistinct(selectList, table, completer));
94127
}
95128

96129
public static <R> List<R> selectList(Function<SelectStatementProvider, List<R>> mapper,
97130
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
98-
return selectList(mapper, SqlBuilder.select(selectList).from(table), completer);
131+
return mapper.apply(select(selectList, table, completer));
99132
}
100133

101134
public static <R> List<R> selectList(Function<SelectStatementProvider, List<R>> mapper,
102135
QueryExpressionDSL<SelectModel> start, SelectDSLCompleter completer) {
103-
return mapper.apply(completer.apply(start).build().render(RenderingStrategies.MYBATIS3));
136+
return mapper.apply(select(start, completer));
104137
}
105138

106-
@Nullable
107139
public static <R> R selectOne(Function<SelectStatementProvider, R> mapper,
108140
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
109-
return selectOne(mapper, SqlBuilder.select(selectList).from(table), completer);
141+
return mapper.apply(select(selectList, table, completer));
110142
}
111143

112-
@Nullable
113144
public static <R> R selectOne(Function<SelectStatementProvider, R> mapper,
114-
QueryExpressionDSL<SelectModel> start,
115-
SelectDSLCompleter completer) {
116-
return mapper.apply(completer.apply(start).build().render(RenderingStrategies.MYBATIS3));
117-
}
118-
119-
@NotNull
120-
public static <R> Optional<R> selectOptional(Function<SelectStatementProvider, Optional<R>> mapper,
121-
BasicColumn[] selectList, SqlTable table, SelectDSLCompleter completer) {
122-
return selectOptional(mapper, SqlBuilder.select(selectList).from(table), completer);
145+
QueryExpressionDSL<SelectModel> start,SelectDSLCompleter completer) {
146+
return mapper.apply(select(start, completer));
123147
}
124148

125-
@NotNull
126-
public static <R> Optional<R> selectOptional(Function<SelectStatementProvider, Optional<R>> mapper,
127-
QueryExpressionDSL<SelectModel> start, SelectDSLCompleter completer) {
128-
return mapper.apply(completer.apply(start).build().render(RenderingStrategies.MYBATIS3));
149+
public static UpdateStatementProvider update(SqlTable table, UpdateDSLCompleter completer) {
150+
return completer.apply(SqlBuilder.update(table))
151+
.build()
152+
.render(RenderingStrategies.MYBATIS3);
129153
}
130154

131155
public static int update(ToIntFunction<UpdateStatementProvider> mapper,
132156
SqlTable table, UpdateDSLCompleter completer) {
133-
return mapper.applyAsInt(
134-
completer.apply(SqlBuilder.update(table))
135-
.build()
136-
.render(RenderingStrategies.MYBATIS3));
157+
return mapper.applyAsInt(update(table, completer));
137158
}
138159
}

src/test/java/examples/simple/PersonMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ default int insertSelective(PersonRecord record) {
145145
}
146146

147147
default Optional<PersonRecord> selectOne(SelectDSLCompleter completer) {
148-
return MyBatis3Utils.selectOptional(this::selectOne, selectList, person, completer);
148+
return MyBatis3Utils.selectOne(this::selectOne, selectList, person, completer);
149149
}
150150

151151
default List<PersonRecord> select(SelectDSLCompleter completer) {

0 commit comments

Comments
 (0)