做网站有哪些苏州网站设计选哪家
web/
2025/10/3 9:58:04/
文章来源:
做网站有哪些,苏州网站设计选哪家,凡科电脑版,微信怎么发布wordpress在第2章节中#xff0c;我们介绍了如何通过Spring Boot来实现HTTP接口#xff0c;以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是#xff0c;这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点#xff0c;…在第2章节中我们介绍了如何通过Spring Boot来实现HTTP接口以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点对于用户的信息、相关业务的内容通常都需要对其进行存储而不是像第2章节中那样把用户信息存储在内存中重启就丢了。
对于信息的存储现在已经有非常非常多的产品可以选择其中不乏许多非常优秀的开源免费产品比如MySQLRedis等。接下来在第3章节我们将继续学习在使用Spring Boot开发服务端程序的时候如何实现对各流行数据存储产品的增删改查操作。
作为数据访问章节的第一篇我们将从最为常用的关系型数据库开始。通过一个简单例子学习在Spring Boot中最基本的数据访问工具JdbcTemplate。
数据源配置
在我们访问数据库的时候需要先配置一个数据源下面分别介绍一下几种不同的数据库配置方式。
首先为了连接数据库需要引入jdbc支持在pom.xml中引入如下配置
dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId/dependency嵌入式数据库支持
嵌入式数据库通常用于开发和测试环境不推荐用于生产环境。Spring Boot提供自动配置的嵌入式数据库有H2、HSQL、Derby你不需要提供任何连接配置就能使用。
比如我们可以在pom.xml中引入如下配置使用HSQL
dependency groupIdorg.hsqldb/groupId artifactIdhsqldb/artifactId scoperuntime/scope/dependency连接生产数据源
以MySQL数据库为例先引入MySQL连接的依赖包在pom.xml中加入
dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId/dependency在src/main/resources/application.properties中配置数据源信息
spring.datasource.urljdbc:mysql://localhost:3306/testspring.datasource.usernamedbuserspring.datasource.passworddbpassspring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver注意因为Spring Boot 2.1.x默认使用了MySQL 8.0的驱动所以这里采用com.mysql.cj.jdbc.Driver而不是老的com.mysql.jdbc.Driver。
连接JNDI数据源
当你将应用部署于应用服务器上的时候想让数据源由应用服务器管理那么可以使用如下配置方式引入JNDI数据源。
spring.datasource.jndi-namejava:jboss/datasources/customers使用JdbcTemplate操作数据库
Spring的JdbcTemplate是自动配置的你可以直接使用Autowired或构造函数推荐来注入到你自己的bean中来使用。
下面就来一起完成一个增删改查的例子
准备数据库
先创建User表包含属性name、age。可以通过执行下面的建表语句
CREATE TABLE User ( name varchar(100) COLLATE utf8mb4_general_ci NOT NULL, age int NOT NULL) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci编写领域对象
根据数据库中创建的User表创建领域对象
DataNoArgsConstructorpublic class User { private String name; private Integer age;}这里使用了Lombok的Data和NoArgsConstructor注解来自动生成各参数的Set、Get函数以及不带参数的构造函数。如果您对Lombok还不了解可以看看这篇文章Java开发神器Lombok的使用与原理。
编写数据访问对象
定义包含有插入、删除、查询的抽象接口UserService
public interface UserService { /** * 新增一个用户 * * param name * param age */ int create(String name, Integer age); /** * 根据name查询用户 * * param name * return */ ListUser getByName(String name); /** * 根据name删除用户 * * param name */ int deleteByName(String name); /** * 获取用户总量 */ int getAllUsers(); /** * 删除所有用户 */ int deleteAllUsers();}通过JdbcTemplate实现UserService中定义的数据访问操作
Servicepublic class UserServiceImpl implements UserService { private JdbcTemplate jdbcTemplate; UserServiceImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate jdbcTemplate; } Override public int create(String name, Integer age) { return jdbcTemplate.update(insert into USER(NAME, AGE) values(?, ?), name, age); } Override public ListUser getByName(String name) { ListUser users jdbcTemplate.query(select NAME, AGE from USER where NAME ?, (resultSet, i) - { User user new User(); user.setName(resultSet.getString(NAME)); user.setAge(resultSet.getInt(AGE)); return user; }, name); return users; } Override public int deleteByName(String name) { return jdbcTemplate.update(delete from USER where NAME ?, name); } Override public int getAllUsers() { return jdbcTemplate.queryForObject(select count(1) from USER, Integer.class); } Override public int deleteAllUsers() { return jdbcTemplate.update(delete from USER); }}编写单元测试用例
创建对UserService的单元测试用例通过创建、删除和查询来验证数据库操作的正确性。
RunWith(SpringRunner.class)SpringBootTestpublic class Chapter31ApplicationTests { Autowired private UserService userSerivce; Before public void setUp() { // 准备清空user表 userSerivce.deleteAllUsers(); } Test public void test() throws Exception { // 插入5个用户 userSerivce.create(Tom, 10); userSerivce.create(Mike, 11); userSerivce.create(Didispace, 30); userSerivce.create(Oscar, 21); userSerivce.create(Linda, 17); // 查询名为Oscar的用户判断年龄是否匹配 ListUser userList userSerivce.getByName(Oscar); Assert.assertEquals(21, userList.get(0).getAge().intValue()); // 查数据库应该有5个用户 Assert.assertEquals(5, userSerivce.getAllUsers()); // 删除两个用户 userSerivce.deleteByName(Tom); userSerivce.deleteByName(Mike); // 查数据库应该有5个用户 Assert.assertEquals(3, userSerivce.getAllUsers()); }}上面介绍的JdbcTemplate只是最基本的几个操作更多其他数据访问操作的使用请参考JdbcTemplate API
通过上面这个简单的例子我们可以看到在Spring Boot下访问数据库的配置依然秉承了框架的初衷简单。我们只需要在pom.xml中加入数据库依赖再到application.properties中配置连接信息不需要像Spring应用中创建JdbcTemplate的Bean就可以直接在自己的对象中注入使用。
更多本系列免费教程连载「点击进入汇总目录」
代码示例
本文的相关例子可以查看下面仓库中的chapter3-1目录
Githubhttps://github.com/dyc87112/SpringBoot-Learning/Giteehttps://gitee.com/didispace/SpringBoot-Learning/
如果您觉得本文不错欢迎Star支持您的关注是我坚持的动力
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86161.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!