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);
}
八、测试结果
获取用户信息列表:
![](https://i-blog.csdnimg.cn/blog_migrate/a1c4de856dcd173e9899277df6ef4015.png)
根据id获取用户信息
![](https://i-blog.csdnimg.cn/blog_migrate/4c5f51fd6f6af09bfdfbe288b07229ba.png)
PS:剩下的增加用户信息,修改用户信息,删除用户信息的controller自行编写。测试接口,建议使用postman或者谷歌插件API Client。需要插件的欢迎留言,同时如有什么错误,欢迎提出指正,谢谢。