diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2017-04-19 16:01:19 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2017-04-19 16:01:19 +0200 |
commit | 8ec2af6e29ecb29645367a28fb1a48cf7f4f24ff (patch) | |
tree | b30a535b4bdcde33e148110b018e39c7d6d7b989 | |
parent | 77653bb945a5ae8adfed549fd4c5d908f5a514ae (diff) | |
download | share-8ec2af6e29ecb29645367a28fb1a48cf7f4f24ff.zip share-8ec2af6e29ecb29645367a28fb1a48cf7f4f24ff.tar.gz |
java : MyMyBatis : add AbstractModel<> to implement save in AbstractDAOOperations<>
-rw-r--r-- | java/MyMyBatis/src/AbstractDAOOperations.java | 9 | ||||
-rw-r--r-- | java/MyMyBatis/src/AbstractModel.java | 7 | ||||
-rw-r--r-- | java/MyMyBatis/src/Main.java | 6 | ||||
-rw-r--r-- | java/MyMyBatis/src/Model.java | 17 | ||||
-rw-r--r-- | java/MyMyBatis/src/ModelDAO.java | 2 |
5 files changed, 33 insertions, 8 deletions
diff --git a/java/MyMyBatis/src/AbstractDAOOperations.java b/java/MyMyBatis/src/AbstractDAOOperations.java index 5307641..a96e336 100644 --- a/java/MyMyBatis/src/AbstractDAOOperations.java +++ b/java/MyMyBatis/src/AbstractDAOOperations.java @@ -2,7 +2,9 @@ package ch.asynk; import java.util.List; -public abstract class AbstractDAOOperations<TObject, TIdentity, TMapper extends AbstractMapper<TObject, TIdentity>> extends AbstractDAO<TObject, TMapper> +public abstract class AbstractDAOOperations<TIdentity, + TObject extends AbstractModel<TIdentity>, + TMapper extends AbstractMapper<TObject, TIdentity>> extends AbstractDAO<TObject, TMapper> { public int insert(final TObject obj) @@ -15,6 +17,11 @@ public abstract class AbstractDAOOperations<TObject, TIdentity, TMapper extends return execInt(m -> m.update(obj), true); } + public int save(final TObject obj) + { + return (obj.isUnsaved() ? insert(obj) : update(obj)); + } + public int delete(final TObject obj) { return execInt(m -> m.delete(obj), true); diff --git a/java/MyMyBatis/src/AbstractModel.java b/java/MyMyBatis/src/AbstractModel.java new file mode 100644 index 0000000..81bab76 --- /dev/null +++ b/java/MyMyBatis/src/AbstractModel.java @@ -0,0 +1,7 @@ +package ch.asynk; + +public interface AbstractModel<TIdentity> +{ + boolean isUnsaved(); +} + diff --git a/java/MyMyBatis/src/Main.java b/java/MyMyBatis/src/Main.java index 043e978..ad371f7 100644 --- a/java/MyMyBatis/src/Main.java +++ b/java/MyMyBatis/src/Main.java @@ -38,7 +38,7 @@ public class Main System.out.println("selectOne : " + m.toString()); System.out.println("update ..."); m.setName("adios"); - dao.update(m); + dao.save(m); m = dao.selectOne(2); failIf(m == null , "selectOne()"); failIf(!m.getName().equals("adios") , "selectOne()"); @@ -50,8 +50,8 @@ public class Main failIf(count != 1, "count()"); System.out.println("count : " + count); System.out.println("insert ..."); - m = new Model(-1, "HoMySatan"); - count = dao.insert(m); + m = new Model("HoMySatan"); + count = dao.save(m); failIf(count != 1, "insert()"); count = dao.count(); failIf(count != 2, "count()"); diff --git a/java/MyMyBatis/src/Model.java b/java/MyMyBatis/src/Model.java index 6e817ed..676cdde 100644 --- a/java/MyMyBatis/src/Model.java +++ b/java/MyMyBatis/src/Model.java @@ -3,18 +3,29 @@ package ch.asynk; import lombok.Setter; import lombok.Getter; -public class Model +public class Model implements AbstractModel<Integer> { private @Setter @Getter Integer id; private @Setter @Getter String name; - public Model(Integer id, String name) + public Model() { - this.id = id; + this.id = null; + } + + public Model(String name) + { + this.id = null; this.name = name; } @Override + public boolean isUnsaved() + { + return (id == null); + } + + @Override public String toString() { return String.format("model [%d] %s", id, name); diff --git a/java/MyMyBatis/src/ModelDAO.java b/java/MyMyBatis/src/ModelDAO.java index 908f35a..dd0e10e 100644 --- a/java/MyMyBatis/src/ModelDAO.java +++ b/java/MyMyBatis/src/ModelDAO.java @@ -2,7 +2,7 @@ package ch.asynk; import java.util.List; -public class ModelDAO extends AbstractDAOOperations<Model, Integer, ModelMapper> implements ModelMapper +public class ModelDAO extends AbstractDAOOperations<Integer, Model, ModelMapper> implements ModelMapper { private static final ModelDAO instance = new ModelDAO(); |