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

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);
}



八、测试结果
获取用户信息列表:

根据id获取用户信息

PS:剩下的增加用户信息,修改用户信息,删除用户信息的controller自行编写。测试接口,建议使用postman或者谷歌插件API Client。需要插件的欢迎留言,同时如有什么错误,欢迎提出指正,谢谢。

猜你喜欢

转载自blog.csdn.net/qq_756589808/article/details/80661697
今日推荐