jdbctemplate 执行多条sql_SpringBoot使用JdbcTemplate连接Mysql实现增删改查

摘要:本文是springboot工程使用JdbcTemplate连接Mysql数据库,实现增删改查的实例,及在搭建过程中碰到的几个问题,前几篇介绍怎么搭建SpringBoot工程,接下来直接入正题

d4457ae0080967776cb972dff1ccd6ef.png

什么是JDBC?

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

JDBC的原理就是通过Connection这个类获取数据库的连接,然后通过PreparedStatement类处理SQL语句,再通过它的.setObject方法传入数据,最后通过方法.executeUpdate()和.executeQuery()执行更新

JdbcTemplate

template,是模板的意思,是Spring框架为我们提供的,JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错。但是功能还是不够强大(比如不支持级联属性),在实际应用中还需要和hibernate、mybaties等框架混合使用。

JdbcTemplate类主要提供以下四类方法

  • execute方法:用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句,batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句
12b6f642f08dc2fcf2ec1100054102a3.png

具体实现

  • 需要的jar包依赖
org.springframework.bootspring-boot-starter-jdbc
  • mysql的驱动jar包
mysqlmysql-connector-javaruntime
  • application.properties配置文件
spring.application.name=testserver.port=8088spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db1spring.datasource.username=rootspring.datasource.password=root#说明一下,注释掉容易犯错的地方(后边会说明这个错误)#spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
ad8fa4be50836eee9c778dfce3a91bf6.png
  • sql语句
/*Navicat MySQL Data TransferSource Server : localhost_3306Source Server Version : 50520Source Host : localhost:3306Source Database : db1Target Server Type : MYSQLTarget Server Version : 50520File Encoding : 65001Date: 2019-03-04 22:36:54*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` varchar(32) NOT NULL, `name` varchar(20) DEFAULT NULL, `sex` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('06170ace6fa94ac5aec51a4b30572fd0', 'Spring', 'Frame');INSERT INTO `user` VALUES ('1', '刘能', '男的');INSERT INTO `user` VALUES ('2', '王五', 'woman');INSERT INTO `user` VALUES ('3d0bd85cd40f4a8584d352accfaf6db6', 'Spring', 'Frame');INSERT INTO `user` VALUES ('a7ff791e54f648d9bc24dd4c472c1f84', 'Spring', 'Frame');
1a46b2711755122aa46013642392a03c.png
  • Dao数据接口
package com.mundo.Test.service;import java.util.List;import com.mundo.Test.pojo.User;import com.mundo.Test.pojo.UserRowMapper;public interface UserService {List queryAll(String sql, UserRowMapper userRowMapper, Object... objects);User selectById(String sql, UserRowMapper userRowMapper, String id);int updateById(String sql, Object... objects);int insert(String sql, Object... objects);int deleteById(String sql, String id);}
  • 接口实现
/** *  */package com.mundo.Test.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Service;import com.mundo.Test.pojo.User;import com.mundo.Test.pojo.UserRowMapper;import com.mundo.Test.service.UserService;/** * @ClassName: UserServiceImpl * @Description: TODO * @author Meng.Xu * @date 2019年3月4日 下午5:32:43 */@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic List queryAll(String sql, UserRowMapper userRowMapper, Object... objects) {return jdbcTemplate.query(sql, userRowMapper, objects);}@Overridepublic User selectById(String sql, UserRowMapper userRowMapper, String id) {return jdbcTemplate.queryForObject(sql, userRowMapper, id);}@Overridepublic int updateById(String sql, Object...objects) {return jdbcTemplate.update(sql, objects);}@Overridepublic int insert(String sql, Object... objects) {return jdbcTemplate.update(sql, objects);}@Overridepublic int deleteById(String sql, String id) {return jdbcTemplate.update(sql, id);}}
10750b7cda7b20dbf3ebca0915c2db0f.png

用的Junit 单元测试

  • 需要在pom.xml中加入
org.springframework.bootspring-boot-starter-testtest
  • 单元测试增删改查
package com.mundo.Test;import java.util.List;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.test.context.junit4.SpringRunner;import com.alibaba.fastjson.JSONObject;import com.mundo.Test.pojo.User;import com.mundo.Test.pojo.UserRowMapper;import com.mundo.Test.service.UserService;import com.mundo.Test.util.UUIDUtil;@RunWith(SpringRunner.class)@SpringBootTestpublic class TestApplicationTests {@Resourceprivate JdbcTemplate jdbcTemplate;private Logger logger = LoggerFactory.getLogger(TestApplicationTests.class);@Resourceprivate UserService userService;@Testpublic void contextLoads() {String sql = "select * from user";List queryAll = userService.queryAll(sql, new UserRowMapper());System.out.println("返回对象集合:" + JSONObject.toJSONString(queryAll));System.out.println("");sql = "select * from user where id = ?";User user = userService.selectById(sql, new UserRowMapper(), "1");System.out.println("返回对象:" + JSONObject.toJSONString(user));System.out.println("");sql = "update user set name = ?, sex = ? where id = ?";int updateById = userService.updateById(sql, "王五
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值