HasorDB CRUD基础操作

2022-01-10 10:04 更新

新增数据​

新增一条数据

TestUser testUser = new TestUser();
testUser.setId(20);
testUser.setName("new name");
testUser.setAge(88);
testUser.setCreateTime(new Date());

LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyEntity(testUser).executeSumResult();

执行结果为

1

新增数据(Map)​

或者使用 Map 承载数据,使用 Map 的时 ​key ​值为 ​​名。

Map<String, Object> newValue = new HashMap<>();
newValue.put("id", 20);
newValue.put("name", "new name");
newValue.put("age", 88);
newValue.put("create_time", new Date());

LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);
int result = insert.applyMap(newValue).executeSumResult();

执行结果为

1

批量新增数据

和新增一条数据时一样,这次使用 ​applyEntity ​的集合重载方法。

TestUser data1 = new TestUser();
data1.setId(20);
data1.setName("new name");
data1.setAge(88);
data1.setCreateTime(new Date());

TestUser data2 = new TestUser();
data2.setId(30);
data2.setName("new name2");
data2.setAge(77);
data2.setCreateTime(new Date());

LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);

List<TestUser> dataList = new ArrayList<>();
dataList.add(data1);
dataList.add(data2);

int result = insert.applyEntity(dataList).executeSumResult();

也可以通过反复 ​applyEntity ​统一执行 ​executeSumResult ​以达到批量新增的目的

LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);

insert = insert.applyEntity(data1);
insert = insert.applyEntity(data2);

int result = insert.executeSumResult();

执行结果为

2

批量新增数据(Map)

只需要将 ​applyEntity ​方法更换为 ​applyMap ​即可使用 Map 作为新增数据的容器

Map<String, Object> data1 = new HashMap<>();
data1.put("id", 20);
data1.put("name", "new name");
data1.put("age", 88);
data1.put("create_time", new Date());

Map<String, Object> data2 = new HashMap<>();
data2.put("id", 30);
data2.put("name", "new name2");
data2.put("age", 77);
data2.put("create_time", new Date());

LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);

List<Map<String, Object>> dataList = new ArrayList<>();
dataList.add(data1);
dataList.add(data2);

int result = insert.applyMap(dataList).executeSumResult();

也可以通过反复 applyEntity 统一执行 executeSumResult 以达到批量新增的目的

LambdaInsert<TestUser> insert = lambdaTemplate.lambdaInsert(TestUser.class);

insert = insert.applyMap(data1);
insert = insert.applyMap(data2);

int result = insert.executeSumResult();

执行结果为

2

条件更新

更新 ID 为 1 的数据,将其 name 和 age 设置为最新值。

TestUser testUser = new TestUser();
testUser.setId(20);
testUser.setName("new name");
testUser.setAge(88);
testUser.setCreateTime(new Date());

LambdaUpdate<TestUser> update = lambdaTemplate.lambdaUpdate(TestUser.class);
int result = update.eq(TestUser::getId, 1)
                   .updateByColumn(Arrays.asList("name", "age"), testUser)
                   .doUpdate();
提示
updateByColumn ​方法的第一个参数为要更新的列,第二个参数为数据 DTO

执行结果为

1

条件更新(Map)

或者使用 Map 承载数据,使用 Map 的时 ​key ​值为 ​​列​名​。

Map<String, Object> newValue = new HashMap<>();
newValue.put("name", "new name");
newValue.put("age", 88);

LambdaUpdate<TestUser> update = lambdaTemplate.lambdaUpdate(TestUser.class);
int result = update.eq(TestUser::getId, 1)
                   .updateByColumn(newValue)
                   .doUpdate();

执行结果为

1

条件更新(Sample)

HasorDB 允许使用 DTO 确定一个数据样本 (​Sample​对象)。作为样本对象只要属性不为空,都会被作为更新的属性。

例如前面的例子中先使用 ​Sample ​承载要更新的数据其余属性全部为空:

TestUser sample = new TestUser();
sample.setName("new name");
sample.setAge(88);

然后通过 ​updateBySample ​方法将匹配条件的数据参照样本进行更新

LambdaUpdate<TestUser> update = lambdaTemplate.lambdaUpdate(TestUser.class);
int result = update.eq(TestUser::getId, 1)
                   .updateBySample(sample)
                   .doUpdate();

执行结果为

1

删除数据

删除 ID 为 1 的数据

LambdaDelete<TestUser> update = lambdaTemplate.lambdaDelete(TestUser.class);
int result = update.eq(TestUser::getId, 1).doDelete();

执行结果为

1


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号