jdbctemplate 执行多条sql_SpringBoot整合jdbcTemplate案例

本节主要学习SpringBoot整合jdbcTemplate的案例。

1.jdbcTemplate介绍

在java项目或产品实际开发中,对数据库操作性能要求比较高的情况下,比如金融或银行类的系统或产品会直接使用jdbc编写代码,虽然代码繁琐,但是执行效率高。为了解决开发效率问题,Spring对数据库的操作在jdbc上面做了更深层次的封装,而JdbcTemplate便是Spring提供的一个操作数据库的便捷工具,类似于apache的dbutils工具包。我们可以借助JdbcTemplate来执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据,并且有效避免直接使用jdbc带来的繁琐编码。

JdbcTemplate主要提供以下五种类型的方法:

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法:用于执行新增、修改、删除等DML语句;
  • query方法及queryForXXX方法:用于执行查询相关的语句;
  • call方法:用于执行数据库存储过程和函数相关的语句;
  • batchUpdate():用于执行批量更新(批量插入,批量修改,批量删除)操作;

当然,在大部分情况下,我们都会直接使用更加强大的持久化框架来访问数据库,比如MyBatis、Hibernate、TopLink、JDO或者Spring Data JPA等ORM框架。如果从数据库操作的整体性能上来说,排序为:JDBC > JdbcTemplate > MyBatis > Hibernate。所以掌握jdbcTemplate的操作也是很有必要的。

2.jdbcTemplate整合案例

以下案例是在idea工具中使用springboot + jdbcTemplate进行案例整合。

1.pom.xml进行坐标配置

    org.springframework.boot            spring-boot-starter-web        org.springframework.boot            spring-boot-starter-data-jdbc        mysql            mysql-connector-java            runtimeorg.projectlombok            lombok            true

2.application.properties属性文件配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/cms?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=root

3.编写领域层代码

package raky.train.entity;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class User {    private Integer id;    private String name;    private String pass;    private Integer age;}

4.编写持久化层代码

持久化层接口:UserDao.java

package raky.train.dao;import raky.train.entity.User;import java.util.List;public interface UserDao {int insert(User user);int update(User user);int delete(Integer id);User getOne(Integer id);List getList(User user);}

持久化层实现:UserDaoImpl.java

package raky.train.dao.impl;import org.springframework.context.annotation.Primary;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.support.JdbcDaoSupport;import org.springframework.stereotype.Repository;import raky.train.dao.UserDao;import raky.train.entity.User;import java.util.List;@Repositorypublic class UserDaoImpl extends JdbcDaoSupport implements UserDao {public UserDaoImpl(JdbcTemplate jdbcTemplate){super.setJdbcTemplate(jdbcTemplate);}@Overridepublic int insert(User user) {return super.getJdbcTemplate().update("insert into user(name, pass, age)values(?, ?, ?)",user.getName(), user.getPass(), user.getAge());}@Overridepublic int update(User user) {return super.getJdbcTemplate().update("update user set name=?, pass=?, age=? where id= ?", user.getName(), user.getPass(), user.getAge(), user.getId());}@Overridepublic int delete(Integer id) {return super.getJdbcTemplate().update("delete from user where id=?",id);}@Overridepublic User getOne(Integer id) {return super.getJdbcTemplate().queryForObject("select * from user where id = ?", new BeanPropertyRowMapper(User.class), id);}@Overridepublic List getList(User user) {return super.getJdbcTemplate().query("select * from user", new BeanPropertyRowMapper(User.class));}}

5.编写服务层代码

服务层接口:UserService.java

package raky.train.service;import raky.train.entity.User;import java.util.List;public interface UserService {int insert(User user);int update(User user);int delete(Integer id);User getOne(Integer id);List getList(User user);}

服务层实现:UserServiceImpl.java

package raky.train.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import raky.train.dao.UserDao;import raky.train.entity.User;import raky.train.service.UserService;import java.util.List;@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic int insert(User user) {return userDao.insert(user);}@Overridepublic int update(User user) {return userDao.update(user);}@Overridepublic int delete(Integer id) {return userDao.delete(id);}@Overridepublic User getOne(Integer id) {return userDao.getOne(id);}@Overridepublic List getList(User user) {return userDao.getList(user);}}

6.编写控制层代码

package raky.train.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import raky.train.entity.User;import raky.train.service.UserService;import java.util.List;@RestController@RequestMapping("/user")public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/insert")public int insert(User user) {return userService.insert(user);}@RequestMapping("/update")public int update(User user) {return userService.update(user);}@RequestMapping("/delete/{id}")public int delete(@PathVariable(name = "id",required = true) Integer id) {return userService.delete(id);}@RequestMapping("/get/{id}")public User getOne(@PathVariable(name = "id",required = true) Integer id) {return userService.getOne(id);}@RequestMapping("/list")public List getList(User user) {return userService.getList(user);}}

7.启动类代码

此类是idea工具自动生成,暂时不需要修改代码。

package raky.train;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootDataJdbcApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootDataJdbcApplication.class, args);    }}

8.运行调试

运行启动类SpringbootDataJdbcApplication.java,控制台打印如下:

e50a4f407dcf4d09dc318a84a8a79a70.png

在浏览器中或postman接口测试工具中输入网址进行调试。以下针对getList和getOne方法进行调试,运行结果展示。

获取列表数据截图如下:

9a03bbba5a3ae9ee360acdebe2034c40.png

根据id获取单个数据,截图如下:

dedda40dbdee447d191fbf8c25e1a679.png

至此,SpringBoot整合jdbcTemplate案例学习笔记整理完毕。如果对大家有帮助,整理不易,希望多点赞,多收藏和多转发,在此表示感谢。每天进步一点点,多实践多总结,越分享越快乐。有技术问题,欢迎大家沟通交流,或者在评论区留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值