1.create
新增数据可以调用实体对象的 create 方法,即可将当前对象保存到数据库中。
User user = new User();
user.setId("1");
user.setName("wunian");
user.create();
2.save
还可以使用 save 方法,它会根据当前实体对象的 id 判断,如果id存在,则执行update,如果id不存在,则执行insert。
User user = new User();
user.setId(null);
user.setName("wunian");
user.save(); // 这里由于 id 是 null ,所以执行的是 insert 数据操作
user.setName("wunian2");
user.save(); // 这里由于结果 insert 操作 id 已经有值了,所以再执行 save 将会执行 update 数据操作
1.delete
通过实体 id 删除数据,delete 方法在找不到指定 id 的记录可以删除的时候将会报错 RecordNotDeletedException 。在不需要知道执行结果只管执行删除语句的场景下可以将 delete 方法换成 tryDelete 方法,用法与上面一致。
// 通过静态方法
User.delete("1");
// 通过实例方法
User user = new User();
user.setId("1");
user.delete();
2.deleteAll
deleteAll 方法是一个比较危险的方法,在什么参数都不传的情况下,它会删除数据库表里所有记录,因此在常用的场景上我们一般会加上过滤条件。
// 过滤删除方式1,参数使用变长数组
User.deleteAll("id = ? or name = ?", "1", "wunian");
// 过滤删除方式2,参数使用 Map
Map params = new HashMap<>();
params.put("name", "wunian");
User.deleteAll("name = :name", params);
1.find 与 findOrNull
String id = "1";
User user = User.find(id);
以上方法的参数 id 如果在数据库中没有对应的记录,此方法将抛错。如果不希望这种情况抛错,可以改为使用 findOrNull。下面的user 对象在找不到对应 id 的情况下,将为 null。
String id = "1";
User user = User.findOrNull(id);
User user = User.findBy("name", "wunian");
3.all
如果需要列出数据库表中的所有记录,可以使用 all 方法。
List users = User.all();
1.update
当我们获取或创建了实体对象之后,调用实体对象的update方法就能把对象所有持久化属性保存到该对象的id对应的数据中。
user.update();
如果我们需要只更新这个 id 对应的数据的某些字段,我们可以调用静态方法 update。
// 使用 Map 传递更新字段和值
Map fields = new HashMap<>();
fields.put("name", "wunian");
User.update("1", fields);
// 在只更新一个字段值的场景下,也可以省略 Map
User.update("1", "name", "wunian");
2.updateAll
指定 id 的更新操作在实际中其实比较少,更多的是指定过滤条件的批量更新。
Map fields = new HashMap<>();
fields.put("name", "wunian");
String where = "name = ?";
User.update(fields, where, "wunian"); // 这里最后一个参数是可变参数