使用Spring Boot RowMapper結合JDK14的Java記錄實現案例 - zetcode
Spring Boot RowMapper教程展示瞭如何將ResultSet的行對映到資料載體。我們使用Java記錄作為資料載體。對於本教程,我們需要JDK 14並啟用預覽功能。
Java記錄是類的受限形式。Java的記錄消除大量的樣板程式碼,如構造器,getters,toString, hashCode和equals方法。他們是不變的。其目的是讓物件成為簡單的資料載體。
專案結構:
pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ │ MyRunner.java │ │ ├───mapper │ │ │ CityMapper.java │ │ ├───model │ │ │ City.java │ │ └───service │ │ CityService.java │ │ ICityService.java │ └───resources │ application.properties │ data-h2.sql │ schema-h2.sql └───test └───java |
Maven pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>SpringBootRowMapper</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <java.version>14</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>14</release> <compilerArgs> --enable-preview </compilerArgs> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
RowMapper寓於 spring-boot-starter-jdbc。在maven-compiler-plugin 配置中,我們啟用預覽功能。
City記錄:刪除了典型Java模型類的大多數模板。
public record City(Long id, String name, Integer population) { } |
對應資料表結構:
CREATE TABLE cities(id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), population BIGINT); |
下面CityMapper結果集的一行對映到City 記錄。
public class CityMapper implements RowMapper<City> { @Override public City mapRow(ResultSet rs, int rowNum) throws SQLException { return new City(rs.getLong("id"), rs.getString("name"), rs.getInt("population")); } } |
將CityMapper結果集的一行對映到City 記錄。由於Java記錄是不可變的,並且不遵循Java Beans規範,因此我們不能使用BeanPropertyRowMapper;。我們必須建立自己的對映器。
呼叫:
@Service public class CityService implements ICityService { @Autowired private JdbcTemplate jtm; @Override public List<City> findAll() { String sql = "SELECT * FROM cities"; return jtm.query(sql, new CityMapper()); } @Override public City findById(Long id) { String sql = "SELECT * FROM cities WHERE id = ?"; return jtm.queryForObject(sql, new Object[]{id}, new CityMapper()); } } |
相關文章
- spring boot 結合Redis 實現工具類Spring BootRedis
- Spring boot學習(六)Spring boot實現AOP記錄操作日誌Spring Boot
- 使用Spring Boot實現資料庫整合配置案例Spring Boot資料庫
- 結合DDD和Spring Boot實現基於REST API的併發控制 -DZone JavaSpring BootRESTAPIJava
- Spring Boot 記錄Spring Boot
- 在Spring Boot實現國際化的案例Spring Boot
- Spring Boot利用AOP獲取使用者操作實現日誌記錄Spring Boot
- 使用Docker實現Spring Boot Restful Web服務案例原始碼DockerSpring BootRESTWeb原始碼
- 使用Spring Boot實現的GraphQL示例Spring Boot
- Spring Boot與Kafka + kafdrop結合使用的簡單示例Spring BootKafka
- Spring Boot支援Java 16和新的Java記錄原始碼教程 | foojaySpring BootJava原始碼
- 案例:商品瀏覽記錄的實現
- 如何才能讓Spring Boot與RabbitMQ結合實現延遲佇列Spring BootMQ佇列
- 使用Spring Boot實現模組化Spring Boot
- 使用Spring Boot實現事務管理Spring Boot
- Spring Boot 和 Thymeleaf 實現 Java 版 HTMXSpring BootJava
- 在Spring Boot中使用CommonsRequestLoggingFilter記錄傳入的請求Spring BootFilter
- spring-boot記錄sql探索SpringbootSQL
- 學習記錄Spring Boot 記錄配置細節Spring Boot
- Spring Boot實現DDD的貨運Cargo微服務案例原始碼Spring BootCargo微服務原始碼
- Spring Boot AOP 掃盲,實現介面訪問的統一日誌記錄Spring Boot
- Spring Boot註解@Transactional結合實際例子講解Spring Boot
- spring-boot-route(十七)使用aop記錄操作日誌Springboot
- 使用Spring Boot和Kafka Streams實現CQRSSpring BootKafka
- 使用Spring Boot實現訊息佇列Spring Boot佇列
- 使用Spring Boot實現分散式事務Spring Boot分散式
- 使用Spring Boot實現Redis事務 | VinsguruSpring BootRedis
- Spring Boot之Validation自定義實現總結Spring Boot
- 適用於JDK14的Spring Boot 2.3版本釋出JDKSpring Boot
- 結合GraalVM與Spring Native的Spring Boot原始碼教程 | foojayLVMSpring Boot原始碼
- 【Spring Boot 使用記錄】kafka自動配置和自定義配置Spring BootKafka
- 使用Spring Boot, Istio和Cert Manager實現Kubernetes的HTTPSSpring BootHTTP
- 使用Vue+Spring Boot實現Excel上傳VueSpring BootExcel
- 使用Spring Boot實現檔案上傳功能Spring Boot
- 使用Java實現簡單的鬥地主案例Java
- Spring Boot中使用WebSocket總結(三):使用訊息佇列實現分散式WebSocketSpring BootWeb佇列分散式
- spring boot學習與踩坑記錄Spring Boot
- Nasruddin/elasticsearch-spring-boot-spring-data:使用Spring Data將Elasticsearch儲存庫與Springboot結合使用的入門示例ElasticsearchSpring Boot