一旦发现英雄也会落井,投石的人会格外勇敢,人群会格外拥挤。——《芳华》
目录结构:

GAV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <dependency> <groupId>com.ejlchina</groupId> <artifactId>bean-searcher-boot-starter</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.36.0.3</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.0.M5</version> </dependency>
|
配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| spring: datasource: driver-class-name: org.sqlite.JDBC url: jdbc:sqlite:src/main/resources/data.sqlite sql: init: schema-locations: classpath:db/schema-sqlite.sql data-locations: classpath:db/data-sqlite.sql
logging: level: root: debug bean-searcher: sql: default-mapping: redundant-suffixes: PO params: pagination: start: 1
|
schema-sqlite.sql
1 2 3 4 5 6 7 8 9
| DROP TABLE IF EXISTS PERSON;
CREATE TABLE PERSON ( id INTEGER PRIMARY KEY AUTOINCREMENT, firstname VARCHAR(30) NULL DEFAULT NULL, age INT(11) NULL DEFAULT NULL, lastname VARCHAR(50) NULL DEFAULT NULL );
|
data-sqlite.sql
1 2 3 4 5 6 7 8 9
| DELETE FROM PERSON;
INSERT INTO PERSON (id, firstname, age, lastname) VALUES (1, 'John', 18, 'White'), (2, 'John', 20, 'Doe'), (3, 'Tom', 28, 'clancy'), (4, 'Sandy', 21, 'white'), (5, 'Billie', 24, 'Billie');
|
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| package com.ruben;
import java.io.BufferedInputStream; import java.util.Arrays; import java.util.List; import java.util.Map;
import javax.annotation.Resource;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.util.ResourceUtils;
import com.ejlchina.searcher.BeanSearcher; import com.ejlchina.searcher.SearchResult; import com.ejlchina.searcher.util.MapUtils; import com.ruben.pojo.po.PersonPO;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; import lombok.SneakyThrows;
@SpringBootTest class SimpleBeanSearcherApplicationTests {
@Resource private JdbcTemplate jdbcTemplate; @Resource private BeanSearcher beanSearcher;
@Value("${spring.sql.init.schema-locations}") private String schemaLocations; @Value("${spring.sql.init.data-locations}") private String dataLocations;
public static final String SQL_SPLIT = ";";
@SneakyThrows @Autowired public void init() { final String schemaSql = IoUtil.readUtf8( (BufferedInputStream) ResourceUtils.getURL(schemaLocations).getContent()); final String dataSql = IoUtil.readUtf8((BufferedInputStream) ResourceUtils.getURL(dataLocations).getContent()); Arrays.stream(schemaSql.split(SQL_SPLIT)).filter(StrUtil::isNotBlank).forEach(jdbcTemplate::execute); Arrays.stream(dataSql.split(SQL_SPLIT)).filter(StrUtil::isNotBlank).forEach(jdbcTemplate::execute); }
@Test void searchPage() { final Map<String, Object> params = MapUtils.builder().page(1, 5).build(); final SearchResult<PersonPO> result = beanSearcher.search(PersonPO.class, params); Assertions.assertEquals(5, result.getTotalCount().longValue()); final List<PersonPO> personPOList = result.getDataList(); Assertions.assertAll(() -> personPOList.forEach(System.out::println)); }
}
|