欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot入门教程(四)---Spring Boot集成JdbcTemplate模板

程序员文章站 2022-04-30 21:41:43
...
JdbcTemplate针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法。 如果你的查询很简单,仅仅是传入相应SQL或者相关参数,然后取得一个单一的结果。在以往SSH架构中,JdbcTemplate的使用是很广泛的,而且JdbcTemplate使用起来很方便,因为Spring是基于原jdbc的基础上进行封装转变成JdbcTemplate模板。下面是SpringBoot集成JdbcTemplate模板的实例:
JdbcTemplate主要提供以下五类方法:
  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。
一、将原来的application.properties文件改为yml后缀,注意:如果没有安装yaml插件的,先安装yaml插件。
二、加入相关依赖
<!-- jdbcTemplate -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- MySQL连接 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
    <scope>provided</scope>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.9</version>
</dependency>


三、在yml文件中配置数据库配置
这里我们使用alibaba的druid数据库连接池,SpringBoot默认使用的是tomcat-jdbc连接池(这个东东我没用过,不知道是啥),当然你也可以使用C3P0,DBCP这些数据库连接池。
## port
server:
  port: 8080

## mysql
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: lin123
    #使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    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
四、创建User实体
public class User implements Serializable {
    private static final long serialVersionUID = 4911469792017137914L;
    private int id;
    private String userName;
    private String phone;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }


五、接口定义
public User getUserInfoById(Integer id);
public List<User> getUserInfoList();

public int addUser(User user);

public int updateUser(Integer id, User user);

public int deleteUser(Integer id);
六、接口实现
@Service
public class UserServiceImpl implements UserService {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public String sayHello(UserBean user) {
        logger.info("这个是日志,第一次使用");
        return "Hello," + user.getUserName() + "!" + "欢迎访问SpringBoot。";
    }

    @Override
    public User getUserInfoById(Integer id) {
        List<User> userList = jdbcTemplate.query("select * from t_user where id = ?", new Object[]{id}, new BeanPropertyRowMapper(User.class));
        if (userList != null && userList.size() > 0) {
            return userList.get(0);
        } else {
            return null;
        }
    }

    @Override
    public List<User> getUserInfoList() {
        List<User> list = jdbcTemplate.query("select * from t_user", new Object[]{}, new BeanPropertyRowMapper(User.class));
        if (list != null && list.size() > 0) {
            return list;
        } else {
            return null;
        }
    }

    @Override
    public int addUser(User user) {
        return jdbcTemplate.update("insert into t_user(user_name, phone) values(?, ?)",
                user.getUserName(), user.getPhone());
    }

    @Override
    public int updateUser(Integer id, User user) {
        return 0;
    }

    @Override
    public int deleteUser(Integer id) {
        return jdbcTemplate.update("DELETE from t_user where id = ? ", id);
    }

}
七、Controller层实现(这里推荐使用Restful风格)
/**
 * 功能描述: 获取用户信息列表
 *
 * @auther: Martin、chen
 * @date: 2018/6/12 9:49
 * @return: com.pdcourse.bean.ResponseMessage
 */
@RequestMapping(value = "getUserInfo")
public ResponseMessage getUserInfo() {

    List<User> userList = userService.getUserInfoList();
    ResponseMessage result = new ResponseMessage();
    result.setResult(userList);
    return result;
}

/**
 * 功能描述: 根据用户Id获取用户信息
 *
 * @param id
 * @auther: Martin、chen
 * @date: 2018/6/12 9:50
 * @return: com.pdcourse.bean.ResponseMessage
 */
@RequestMapping(value = "getUserInfoById/{id}")
public ResponseMessage getUserInfoById(@PathVariable(value = "id") Integer id) {

    User user = userService.getUserInfo(id);
    return new ResponseMessage(user);
}



八、测试结果
获取用户信息列表:
Spring Boot入门教程(四)---Spring Boot集成JdbcTemplate模板
根据id获取用户信息
Spring Boot入门教程(四)---Spring Boot集成JdbcTemplate模板
PS:剩下的增加用户信息,修改用户信息,删除用户信息的controller自行编写。测试接口,建议使用postman或者谷歌插件API Client。需要插件的欢迎留言,同时如有什么错误,欢迎提出指正,谢谢。