返回 导航

SpringBoot / Cloud

hangge.com

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

作者:hangge | 2019-11-13 08:10

一、基本介绍

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?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=hangge1234

二、基本用法

1,创建实体类

(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<User> 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<User> users = userDao.getAllUsers();
        System.out.println("查询多条数据>>>" + users);
        
        return;
    }
}

4,运行测试

在浏览器中访问 http://localhost:8080/test 地址,可以看到控制台打印出的日志如下:
评论

全部评论(0)

回到顶部