@@ -205,6 +205,73 @@ public int insert(E entity) {
205205 }
206206 return count ;
207207 }
208+
209+ public KeyHolderResult insertForKey (E entity , String ... keyColumns ) {
210+ if (useBeforeInsert ) {
211+ beforeInsert (entity );
212+ }
213+
214+ StringBuilder nameBuilder = new StringBuilder ();
215+ StringBuilder valueBuilder = new StringBuilder ();
216+
217+
218+ Object fieldValue = EntityRefelectUtils .getFieldValue (entity , idField );
219+ if (fieldValue == null ) {
220+ fieldsWithoutId .forEach (field -> {
221+ nameBuilder .append ("," ).append (StringExtUtils .camelToUnderline (field .getName ()));
222+ valueBuilder .append (",:" ).append (field .getName ());
223+ });
224+ } else {
225+ fields .forEach (field -> {
226+ nameBuilder .append ("," ).append (StringExtUtils .camelToUnderline (field .getName ()));
227+ valueBuilder .append (",:" ).append (field .getName ());
228+ });
229+ }
230+
231+ SQL sql = getSQL ()
232+ .INSERT_INTO (tableName , nameBuilder .deleteCharAt (0 ).toString ())
233+ .VALUES (valueBuilder .deleteCharAt (0 ).toString ())
234+ .beanParameter (entity );
235+
236+ KeyHolderResult keyHolderResult = sql .updateForKey (keyColumns );
237+ if (useAfterInsert ) {
238+ afterInsert (entity , keyHolderResult .getCount ());
239+ }
240+ return keyHolderResult ;
241+ }
242+
243+ public KeyHolderResult insertForId (E entity ) {
244+ if (useBeforeInsert ) {
245+ beforeInsert (entity );
246+ }
247+
248+ StringBuilder nameBuilder = new StringBuilder ();
249+ StringBuilder valueBuilder = new StringBuilder ();
250+ Object fieldValue = EntityRefelectUtils .getFieldValue (entity , idField );
251+ if (fieldValue == null ) {
252+ fieldsWithoutId .forEach (field -> {
253+ nameBuilder .append ("," ).append (StringExtUtils .camelToUnderline (field .getName ()));
254+ valueBuilder .append (",:" ).append (field .getName ());
255+ });
256+ } else {
257+ fields .forEach (field -> {
258+ nameBuilder .append ("," ).append (StringExtUtils .camelToUnderline (field .getName ()));
259+ valueBuilder .append (",:" ).append (field .getName ());
260+ });
261+ }
262+
263+ SQL sql = getSQL ()
264+ .INSERT_INTO (tableName , nameBuilder .deleteCharAt (0 ).toString ())
265+ .VALUES (valueBuilder .deleteCharAt (0 ).toString ())
266+ .beanParameter (entity );
267+
268+ KeyHolderResult keyHolderResult = sql .updateForKey (idColumnName );
269+ if (useAfterInsert ) {
270+ afterInsert (entity , keyHolderResult .getCount ());
271+ }
272+ return keyHolderResult ;
273+ }
274+
208275
209276 /**
210277 * 批量插入
0 commit comments