HasorDB CRUD基礎(chǔ)操作

2022-01-10 10:04 更新

新增數(shù)據(jù)?

新增一條數(shù)據(jù)

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();

執(zhí)行結(jié)果為

1

新增數(shù)據(jù)(Map)?

或者使用 Map 承載數(shù)據(jù),使用 Map 的時(shí) ?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();

執(zhí)行結(jié)果為

1

批量新增數(shù)據(jù)?

和新增一條數(shù)據(jù)時(shí)一樣,這次使用 ?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();

也可以通過(guò)反復(fù) ?applyEntity ?統(tǒng)一執(zhí)行 ?executeSumResult ?以達(dá)到批量新增的目的

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

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

int result = insert.executeSumResult();

執(zhí)行結(jié)果為

2

批量新增數(shù)據(jù)(Map)?

只需要將 ?applyEntity ?方法更換為 ?applyMap ?即可使用 Map 作為新增數(shù)據(jù)的容器

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();

也可以通過(guò)反復(fù) applyEntity 統(tǒng)一執(zhí)行 executeSumResult 以達(dá)到批量新增的目的

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

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

int result = insert.executeSumResult();

執(zhí)行結(jié)果為

2

條件更新?

更新 ID 為 1 的數(shù)據(jù),將其 name 和 age 設(shè)置為最新值。

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 ?方法的第一個(gè)參數(shù)為要更新的列,第二個(gè)參數(shù)為數(shù)據(jù) DTO

執(zhí)行結(jié)果為

1

條件更新(Map)?

或者使用 Map 承載數(shù)據(jù),使用 Map 的時(shí) ?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();

執(zhí)行結(jié)果為

1

條件更新(Sample)?

HasorDB 允許使用 DTO 確定一個(gè)數(shù)據(jù)樣本 (?Sample?對(duì)象)。作為樣本對(duì)象只要屬性不為空,都會(huì)被作為更新的屬性。

例如前面的例子中先使用 ?Sample ?承載要更新的數(shù)據(jù)其余屬性全部為空:

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

然后通過(guò) ?updateBySample ?方法將匹配條件的數(shù)據(jù)參照樣本進(jìn)行更新

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

執(zhí)行結(jié)果為

1

刪除數(shù)據(jù)?

刪除 ID 為 1 的數(shù)據(jù)

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

執(zhí)行結(jié)果為

1


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)