唐山市城乡建设网站,网站建设一般用什么语言好,网站建设计划书,营销型商务网站Oracle相信大家都不陌生吧#xff0c;一个大型的数据库#xff0c;至于数据库#xff0c;我相信各位都比较熟悉了#xff0c;一个软件系统#xff0c;不论是我们常做的App、小程序、还是传统的web站点#xff0c;我们都有用户的信息#xff0c;相关业务的数据#xff0…Oracle相信大家都不陌生吧一个大型的数据库至于数据库我相信各位都比较熟悉了一个软件系统不论是我们常做的App、小程序、还是传统的web站点我们都有用户的信息相关业务的数据通常都会存储在相关数据库中比如MySQLOracleSQL server 等等。
在你看到这篇文章的时候我相信你对Spring Boot已经有足够的了解了我在这篇文档中将会采用Oracle数据库进行数据存储PS:Oracle数据库和MySQL有语法差别虽然总体是一样的但是还是存在不一样的语法。
接下来我们正式开始
JdbcTemplate
JdbcTemplate是Spring框架中的一个核心类用于简化Java应用程序与关系型数据库的交互操作。它提供了一种简单而灵活的方式来执行SQL查询、更新和存储过程调用等数据库操作。
JdbcTemplate封装了一些常见的数据库操作如查询单行或多行数据、插入、更新和删除数据等。它通过使用JDBCJava Database Connectivity来与数据库进行通信并提供了一些方便的方法来处理结果集、处理异常以及执行事务操作。
使用JdbcTemplate可以减少编写重复的JDBC代码的工作量提高开发效率。它还提供了一些高级功能如命名参数、批处理操作和查询结果的映射等使得数据库操作更加方便和易于维护。
数据源配置
在此我说明一下由于今年我写这篇文章的时候发现Oracle11早已停止更新Oracle 21的又是官网比较新的故而我采用了Oracle 19c如果你自己用的Oracle还是比较旧的版本 请改为你所对应的版本不同的版本会有相应的差别 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--导入jdbc依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdcom.oracle.ojdbc/groupIdartifactIdojdbc8/artifactIdversion19.3.0.0/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency接下来在我们Spring Boot创建的src/main/resources/application.properties添加数据源信息。
# Mysql的配置
#spring.datasource.urljdbc:mysql://localhost:3306/test
#spring.datasource.usernameroot
#spring.datasource.password123456
#spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver# Oracle的配置
spring.datasource.urljdbc:oracle:thin:localhost:1521/orcl
spring.datasource.usernameroot
spring.datasource.passwordroot
spring.datasource.driver-class-nameoracle.jdbc.driver.OracleDriverPS: 在Spring Boot 2.x中默认采用MySQL 8的驱动故而上边加了cj
使用JdbcTemplate操作数据库
Spring 的JdbcTemplate是自动配置的我们可以使用Autowried 或者构造函数或者set方法来注入到我们想要的bean中使用。
我们在Oracle 中创建的数据库实际上就是我们创建的相关用户我们利用我们创建的用户的账号和密码进行登录然后再用户下创建表的。
以下是我创建了root用户后然后利用root用户的账号密码进行登录创建的表的SQL语句
CREATE TABLE useradd (name varchar2 (100) NOT NULL,age integer NOT NULL
)接下来我们根据数据库中创建的表然后创建实体对象
public class User {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public User(String name, Integer age) {this.name name;this.age age;}public User() {}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;User user (User) o;return Objects.equals(name, user.name) Objects.equals(age, user.age);}Overridepublic int hashCode() {return Objects.hash(name, age);}Overridepublic String toString() {return User{ name name \ , age age };}
}创建相关接口
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实现接口中的数据访问操作
Service
public class UserServiceImpl implements UserService {private JdbcTemplate jdbcTemplate;UserServiceImpl(JdbcTemplate jdbcTemplate) {this.jdbcTemplate jdbcTemplate;}Overridepublic int create(String name, Integer age) {return jdbcTemplate.update(insert into USERADD(NAME, AGE) values(?, ?), name, age);}Overridepublic ListUser getByName(String name) {ListUser users jdbcTemplate.query(select NAME, AGE from USERADD where NAME ?, (resultSet, i) - {User user new User();user.setName(resultSet.getString(NAME));user.setAge(resultSet.getInt(AGE));return user;}, name);return users;}Overridepublic int deleteByName(String name) {return jdbcTemplate.update(delete from USERADD where NAME ?, name);}Overridepublic int getAllUsers() {return jdbcTemplate.queryForObject(select count(1) from USERADD, Integer.class);}Overridepublic int deleteAllUsers() {return jdbcTemplate.update(delete from USERADD);}}然后我们采用Spring Boot的单元测试创建一个测试用例通过创建删除以及查询来看我们是否正确的对数据库进行操作。
RunWith(SpringRunner.class)
SpringBootTest
public class Chapter31ApplicationTests {Autowiredprivate UserService userSerivce;Beforepublic void setUp() {// 准备清空user表userSerivce.deleteAllUsers();}Testpublic void test() throws Exception {// 插入5个用户userSerivce.create(miaow, 10);userSerivce.create(jjkeo, 11);userSerivce.create(cfase, 30);userSerivce.create(okeda, 21);userSerivce.create(joke, 17);// 查询名为Oscar的用户判断年龄是否匹配ListUser userList userSerivce.getByName(joke);Assert.assertEquals(17, userList.get(0).getAge().intValue());// 查数据库应该有5个用户Assert.assertEquals(5, userSerivce.getAllUsers());// 删除两个用户userSerivce.deleteByName(jjkeo);userSerivce.deleteByName(cfase);// 查数据库应该有5个用户Assert.assertEquals(3, userSerivce.getAllUsers());}}我们发现成功了通过上面这个简单的例子我们可以看到在Spring Boot下访问数据库的配置依然秉承了框架的初衷简单。
我们只需要在pom.xml中加入数据库依赖再到application.properties中配置连接信息不需要像Spring应用中创建JdbcTemplate的Bean就可以直接在自己的对象中注入使用。