SpringBoot - 使用JdbcTemplate操作数据库1(安装配置,基本用法)

作者: hangge 发布时间: 2020-01-28 浏览: 43 次 编辑

一、基本介绍

1,什么是 JdbcTemplate

  • JdbcTemplateSpring 提供的一套 JDBC 模版框架,利用 AOP 技术来解决直接使用 JDBC 时大量重复代码的问题。
  • JdbcTemplate 虽然没有 MyBatis 那么灵活,但是比直接使用 JDBC 要方便很多。

2,安装配置

(1)首先编辑 pom.xml 文件,添加相关依赖:

spring-boot-starter-jdbc:提供对 JDBC 数据库的支持
mysql-connector-javaMySQL 数据库驱动
druidDruid 是阿里巴巴开发的号称为监控而生的数据库连接池,也是目前最好的数据库连接池。

<!-- spring-jdbc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
 
<!-- 数据库驱动依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
 
<!-- 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

(2)接着在 application.properties 中配置数据库连接信息:

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

二、基本用法

1,创建实体类

(1)假设我们数据库表结构如下:

原文:SpringBoot - 使用JdbcTemplate操作数据库1(安装配置,基本用法)


(2)创建对应的 User 实体类

@Setter
@Getter
@NoArgsConstructor
@ToString
public class User {
    private Integer id;
    private String userName;
    private String passWord;
}

2,创建数据库访问层

接着创建 UserDao,具体内容如下:

(1)由于前面我们已经添加了 spring-jdbc 相关的依赖,JdbcTemplate 会被注册到 Spring 容器中,因此可以直接注入 JdbcTemplate 使用:

  • 增删改三种类型的操作主要使用 updatebatchUpdate 方法来完成。
  • queryqueryForObject 方法中主要用来完成查询功能。
  • execute 方法可以用来执行任意的 SQLcall 方法来调用存储过程。

(2)在执行查询操作时,需要有一个 RowMapper 将查询出来的列和实体类中的属性一一对应起来:

  • 如果列名和属性名都是相同的,那么可以直接使用 BeanPropertyRowMapper
  • 如果列名和属性名不同,就需要开发者自己实现 RowMapper 接口,将列和实体类属性一一对应起来。

@Repository
public class UserDao {
    @Autowired
    JdbcTemplate jdbcTemplate;
 
    // 新增数据
    public int addUser(User user) {
        return jdbcTemplate.update("INSERT INTO users(username, password) VALUE (?, ?)",
                user.getUserName(), user.getPassWord());
    }
 
    // 修改数据
    public int updateUser(User user) {
        return jdbcTemplate.update("UPDATE users SET username=?, password=? WHERE id=?",
                user.getUserName(), user.getPassWord(), user.getId());
    }
 
    // 删除数据
    public int deleteUserById(Integer id) {
        return jdbcTemplate.update("DELETE FROM users WHERE id=?", id);
    }
 
    // 获取单条数据
    public User getUserById(Integer id) {
        return jdbcTemplate.queryForObject("SELECT * FROM users WHERE id=?",
               new BeanPropertyRowMapper<>(User.class), id);
    }
 
    // 获取多条数据
    public List getAllUsers() {
        return jdbcTemplate.query("SELECT * FROM users",
                new BeanPropertyRowMapper<>(User.class));
    }
}

3,创建 Controller

我们在 Controller 中通过调用 UserDao 进行数据的增、删、改、查操作。

@RestController
public class HelloController {
 
    @Autowired
    UserDao userDao;
 
    @RequestMapping("/test")
    public void test(){
        // 新增数据
        User user1 = new User();
        user1.setUserName("hangge");
        user1.setPassWord("123456");
        int i1 = userDao.addUser(user1);
        System.out.println("插入一条数据>>>" + i1);
 
        // 修改数据
        User user2 = new User();
        user2.setId(1);
        user2.setPassWord("888888");
        int i2 = userDao.updateUser(user2);
        System.out.println("更新一条数据>>>" + i2);
 
        // 删除数据
        int i3 = userDao.deleteUserById(12);
        System.out.println("删除一条数据>>>" + i3);
 
        // 查询单条数据
        User user4 = userDao.getUserById(1);
        System.out.println("查询1条数据>>>" + user4.toString());
 
        // 查询多条数据
        List users = userDao.getAllUsers();
        System.out.println("查询多条数据>>>" + users);
         
        return;
    }
}

4,运行测试

在浏览器中访问 http://localhost:8080/test 地址,可以看到控制台打印出的日志如下:
原文:SpringBoot - 使用JdbcTemplate操作数据库1(安装配置,基本用法)




原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2529.html