(五)SpringBoot2.0整合使用JdbcTemplate

本文介绍如何在SpringBoot2.0项目中整合JdbcTemplate进行数据库操作,包括pom文件配置、application.yml配置、Service层实现、数据库表结构及Controller层处理。

一. 项目步骤

1. pom文件引入

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!-- mysql 依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
	</dependencies>

2. application.yml配置

#数据库配置
spring:
  datasource:
    name: hejrDataSource
    url: jdbc:mysql://localhost:3306/springboot2.0_db?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20

3. Service层

@Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public Object addUser(String userName) {
        int ret = jdbcTemplate.update("insert into TB_USER values(null,?);", userName);
        return ret;
    }

4. 数据库表结构

CREATE TABLE `tb_user` (
  `USER_ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `USER_NAME` varchar(50) DEFAULT NULL COMMENT '用户名',
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

5. Controller层

/**
     * 新增用户
     * @param userName
     * @return
     */
    @RequestMapping("/addUser")
    public Object addUser(String userName) {
        CommonResultObject resultObject = new CommonResultObject();
        try {
            resultObject.setResult(userService.addUser(userName));
            resultObject.setCode(200);
            resultObject.setMessage("新增用户成功");
        } catch (Exception e) {
            resultObject.setCode(-1);
            resultObject.setMessage("新增用户失败");
        }
        return resultObject;
    }

二. 注意事项

其实在实际开发中,一般不会采用JdbcTemplate,而是会使用其他的,比如Mybatis-Plus,只是如果是学习,那就要都了解,如果能搞明白最好不过,以及要注意项目结构的规范。

三. 源码地址

https://gitee.com/hejr.cn.com/SpringBoot2.0_2019/tree/master/springboot2.0_002

下一篇:(六)SpringBoot2.0报错The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than

### Spring Boot JdbcTemplate CRUD Example #### 创建Spring Boot应用程序并配置JDBC依赖项 为了使用`JdbcTemplate`,需要在项目的`pom.xml`文件中添加必要的依赖项。这通常包括Spring JDBC和数据库驱动程序的依赖项[^1]。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> ``` #### 配置数据源属性 接着,在`application.properties`或`application.yml`文件里定义数据源的相关参数: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.jpa.hibernate.ddl-auto=update ``` #### 定义实体类 创建一个简单的Java Bean来表示表中的记录。例如,对于学生信息管理应用而言,可以有如下所示的学生实体类[^2]。 ```java public class Student { private Long id; private String name; private Integer age; // Getters and Setters... } ``` #### 编写DAO接口及其实现 通过继承`JdbcDaoSupport`或者注入`JdbcTemplate`对象到自定义的数据访问层组件内完成基本的操作逻辑编码工作。下面给出的是基于后者的方式编写的一个简易版DAO实现例子。 ```java @Repository public class StudentRepository { @Autowired private JdbcTemplate jdbcTemplate; public List<Student> findAll(){ return jdbcTemplate.query( "SELECT * FROM student", (rs, rowNum) -> new Student(rs.getLong("id"), rs.getString("name"), rs.getInt("age")) ); } public void insert(Student s){ jdbcTemplate.update( "INSERT INTO student(name, age) VALUES(?, ?)", s.getName(), s.getAge() ); } public int update(Student s){ return jdbcTemplate.update( "UPDATE student SET name=?, age=? WHERE id=?", s.getName(),s.getAge(),s.getId()); } public boolean deleteById(Long id){ return jdbcTemplate.update("DELETE FROM student WHERE id=?", id)>0 ; } } ``` 上述代码片段展示了如何利用`JdbcTemplate`来进行SQL语句执行以及结果集处理的工作流程;其中包含了查询(`findAll`)、插入(`insert`)、更新(`update`)及删除(`deleteById`)四种常见的持久化操作方法的具体实现方式。 #### 控制器部分 最后一步就是构建RESTful风格的服务端点以便客户端能够发送HTTP请求触发相应的业务逻辑处理过程了。这里仅提供了一个获取全部学生的GET请求处理器样例供参考。 ```java @RestController @RequestMapping("/api/students") public class StudentController { @Autowired private StudentRepository repository; @GetMapping("") public ResponseEntity<List<Student>> getAllStudents() { try{ List<Student> students = this.repository.findAll(); if(students.isEmpty()){ return new ResponseEntity<>(HttpStatus.NO_CONTENT); } return new ResponseEntity<>(students, HttpStatus.OK); }catch(Exception e){ return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } } ``` 以上即是在Spring Boot项目中运用`JdbcTemplate`实施CRUD功能的大致步骤说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值