Spring Boot怎么整合JdbcTemplate(jdbctemplate,springboot,开发技术)

时间:2024-05-09 10:48:16 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

这篇“SpringBoot怎么整合JdbcTemplate”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么整合JdbcTemplate”文章吧。

整合JdbcTemplate

JdbcTemplate 是 Spring 提供的一套 JDBC 模板框架,利用 AOP 技术来解决直接使用 JDBC 时大量重复代码的问题。JdbcTemplate 虽然没有 Mybatis 灵活,但是比直接使用 JDBC 方便很多。Spring Boot 中对 JdbcTemplate 的使用提供了自动化配置类 JdbcTemplateAutoConfiguration,部分源码如下:

@Configuration@ConditionalOnClass({DataSource.class,JdbcTemplate.class})@ConditionalOnSingleCandidate(DataSource.class)@AutoConfigureAfter({DataSourceAutoConfiguration.class})@EnableConfigurationProperties({JdbcProperties.class})publicclassJdbcTemplateAutoConfiguration{publicJdbcTemplateAutoConfiguration(){}@Configuration@Import({JdbcTemplateAutoConfiguration.JdbcTemplateConfiguration.class})staticclassNamedParameterJdbcTemplateConfiguration{NamedParameterJdbcTemplateConfiguration(){}@Bean@Primary@ConditionalOnSingleCandidate(JdbcTemplate.class)@ConditionalOnMissingBean({NamedParameterJdbcOperations.class})publicNamedParameterJdbcTemplatenamedParameterJdbcTemplate(JdbcTemplatejdbcTemplate){returnnewNamedParameterJdbcTemplate(jdbcTemplate);}}@ConfigurationstaticclassJdbcTemplateConfiguration{privatefinalDataSourcedataSource;privatefinalJdbcPropertiesproperties;JdbcTemplateConfiguration(DataSourcedataSource,JdbcPropertiesproperties){this.dataSource=dataSource;this.properties=properties;}@Bean@Primary@ConditionalOnMissingBean({JdbcOperations.class})publicJdbcTemplatejdbcTemplate(){JdbcTemplatejdbcTemplate=newJdbcTemplate(this.dataSource);Templatetemplate=this.properties.getTemplate();jdbcTemplate.setFetchSize(template.getFetchSize());jdbcTemplate.setMaxRows(template.getMaxRows());if(template.getQueryTimeout()!=null){jdbcTemplate.setQueryTimeout((int)template.getQueryTimeout().getSeconds());}returnjdbcTemplate;}}}

从源码中看出,当 classpath 下存在 DataSource 和 JdbcTemplate 并且 DataSource 只有一个实例时,自动配置才会生效,若开发者没有提供 JdbcOperations ,则 Spring Boot 会自动向容器中注入一个 JdbcTemplate (JdbcTemplate 是 JdbcOperations 的子类)。因此,开发者想使用 JdbcTemplate 只需要提供 JdbcTemplate 的依赖和 DataSource 依赖即可

创建数据库和表

在数据库中创建表,如下:

CREATETABLE`book`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(128)DEFAULTNULL,`author`varchar(128)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8;INSERTINTO`chapter05`(`id`,`name`,`author`)VALUES(1,'斗罗大陆Ⅰ','唐家三少');INSERTINTO`chapter05`(`id`,`name`,`author`)VALUES(2,'斗罗大陆Ⅱ','唐家三少');

创建项目

创建 Spring Boot 项目 ,添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency>

spring-boot-starter-jdbc 中提供了 spring-jdbc,另外还加入了数据库驱动依赖和数据库连接池依赖

数据库配置

在application.properties 中配置数据库基本连接信息

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/weirdo
spring.datasource.username=root
spring.datasource.password=root

创建实体类

创建 Book 实体类,代码如下:

publicclassBook{privateintid;privateStringname;privateStringauthor;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}}

创建数据库访问层

创建 BookDao,代码如下:

@RepositorypublicclassBookDao{@AutowiredJdbcTemplatejdbcTemplate;publicintaddBook(Bookbook){returnjdbcTemplate.update("INSERTINTObook(name,author)VALUES(?,?)",book.getName(),book.getAuthor());}publicintupdateBook(Bookbook){returnjdbcTemplate.update("UPDATEbookSETname=?,author=?WHEREid=?",book.getName(),book.getAuthor(),book.getId());}publicintdeleteBookById(Integerid){returnjdbcTemplate.update("DELETEFROMbookWHEREid=?",id);}publicBookgetBookById(Integerid){returnjdbcTemplate.queryForObject("select*frombookwhereid=?",newBeanPropertyRowMapper<>(Book.class),id);}publicList<Book>getAllBooks(){returnjdbcTemplate.query("select*frombook",newBeanPropertyRowMapper<>(Book.class));}}

代码解释:

  • 创建 BookDao ,注入 jdbcTemplate 。由于已经添加了 spring-jdbc 相关依赖, JdbcTemplate 会被自动注册到 Spring 容器中,因此这里可以直接注入 JdbcTemplate 使用

  • 在 JdbcTemplate 中,增删改三种类型的操作主要使用 update 和 batchUpdate 方法来完成,query 和 queryForObject 方法主要用来完成查询功能。另外,还有 execute 方法可以用来执行任意的sql、call 方法用来调用存储过程等

  • 在执行查询操作时,需要有一个 RowMapper 将查询出来的列和实体类中的属性一一对应。如果列名和属性名是相同的,那么可以直接使用 BeanPropertyRowMapper;如果列名和属性名不同,需要开发者自己实现 RowMapper 接口,将列和实体类属性一一对应起来

创建 Service 和 Controller

创建 BookService 和 BooKController

@ServicepublicclassBookService{@AutowiredBookDaobookDao;publicintaddBook(Bookbook){returnbookDao.addBook(book);}publicintupdateBook(Bookbook){returnbookDao.updateBook(book);}publicintdeleteBookById(Integerid){returnbookDao.deleteBookById(id);}publicBookgetBookById(Integerid){returnbookDao.getBookById(id);}publicList<Book>getAllBooks(){returnbookDao.getAllBooks();}}
@RestControllerpublicclassBookController{@AutowiredBookServicebookService;@GetMapping("/bookOps")publicvoidbookOps(){Bookb1=newBook();b1.setId(99);b1.setName("西厢记");b1.setAuthor("王实甫");inti=bookService.addBook(b1);System.out.println("addBook>>>"+i);Bookb2=newBook();b2.setId(1);b2.setName("朝花夕拾");b2.setAuthor("鲁迅");intupdateBook=bookService.updateBook(b2);System.out.println("updateBook>>>"+updateBook);Bookb3=bookService.getBookById(1);System.out.println("getBookById>>>"+b3);intdelete=bookService.deleteBookById(2);System.out.println("deleteBookById>>>"+delete);List<Book>allBooks=bookService.getAllBooks();System.out.println("getAllBooks>>>"+allBooks);}}

最后在浏览器中访问 http://localhost:8081/bookOps 地址,控制台打印日志如下:

addBook>>>1
updateBook>>>1
getBookById>>>com.sang.Book@35e33288
deleteBookById>>>1
getAllBooks>>>[com.sang.Book@2f7c2d6d, com.sang.Book@32db4b36]

数据库中的数据如下:

Spring Boot怎么整合JdbcTemplate

以上就是关于“SpringBoot怎么整合JdbcTemplate”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

本文:Spring Boot怎么整合JdbcTemplate的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:js怎么去除数组中的empty undefined空项下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18