Jersey JdbcTemplate的使用
- - CSDN博客编程语言推荐文章Jersey JdbcTemplate的使用. 经过前面的介绍,我们可以实现简单RESTful服务了,并使用map集合模拟了,学生信息的增删改查. 但是实际开发中我们更多的是与数据库打交道,使用数据库来处理数据,因此在下面的章节中我们将会介绍Jersey框架与数据库进行交互的操作. 本章节我们介绍Jersey与JdbcTemplate的结合使用.
经过前面的介绍,我们可以实现简单RESTful服务了,并使用map集合模拟了,学生信息的增删改查。但是实际开发中我们更多的是与数据库打交道,使用数据库来处理数据,因此在下面的章节中我们将会介绍Jersey框架与数据库进行交互的操作。
本章节我们介绍Jersey与JdbcTemplate的结合使用。
在spring与Jersey整合的基础上需要加上spring Jdbc的支持,以及mysql的数据库驱动
<!--引入Spring关于JDBC操作的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<!--引入mysql的驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.3</version>
</dependency>
create database testlx;
CREATE TABLE `user` (
`id` varchar(32) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
public class User {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
配置文件中需要配置数据源 JdbcTemplate bean等
application.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!--导入配置文件-->
<import resource="classpath:config/spring-base.xml" />
<import resource="classpath:config/spring-datasource.xml" />
</beans>
spring-base.xml文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!--开启注解扫描-->
<context:component-scan base-package="cn.lx" />
<!-- 开启注解注入等 -->
<context:annotation-config />
</beans>
spring-datasource.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!--配置数据源-->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName"
value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://xxxxxx.com:3306/testlx?characterEncoding=utf8" />
<property name="username" value="mdtest" />
<property name="password" value="Tairan@11mdtest" />
</bean>
<!--1:配置一个JdbcTemplate实例 -->
<bean id = "jdbcTemplate"
class = "org.springframework.jdbc.core.JdbcTemplate">
<property name = "dataSource" ref="dataSource"/>
</bean>
</beans>
UserService接口
public interface UserService {
public void insert(User user);
public void update(User user);
public void delete(String id);
public User selectById(String id);
public List<User> selectAll();
}
UserServiceImpl实现
我们使用Spring自动生成bean的方式生成该对象,所以需要加上@Service注解,同时需要注入JdbcTemplate
@Service
public class UserServiceImpl implements UserService{
@Resource
private JdbcTemplate jdbcTemplate;
/**
* 插入用户
* @param user
*/
public void insert(User user) {
try {
String sql = "insert into user(id,name,age) values(?,?,?)";
Object[] params = new Object[]{user.getId(),user.getName(),user.getAge()};
jdbcTemplate.update(sql,params);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 更新用户
* @param user
*/
public void update(User user) {
try {
String sql = "update user set name = ?,age = ? where id = ?";
Object[] params = new Object[]{
user.getName(),user.getAge(),user.getId()
};
jdbcTemplate.update(sql,params);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 根据id删除用户
* @param id
*/
public void delete(String id) {
try {
String sql = "delete from user where id =?";
Object[] params = new Object[]{id};
jdbcTemplate.update(sql,params);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 通过id 查询用户
* @param id
* @return
*/
public User selectById(String id) {
try {
String sql = "select * from user where id =?" ;
final User user = new User();
final Object[] params = new Object[]{id};
jdbcTemplate.query(sql, params, new RowCallbackHandler() {
public void processRow(ResultSet resultSet) throws SQLException {
user.setId(resultSet.getString("id"));
user.setName(resultSet.getString("name"));
user.setAge(resultSet.getInt("age"));
}
});
return user;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
/**
* 查询所有用户
* @return
*/
public List<User> selectAll() {
try {
String sql = "select * from user " ;
List<User> lists;
lists = jdbcTemplate.query(sql, new RowMapper<User>() {
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getString("id"));
user.setName(resultSet.getString("name"));
user.setAge(resultSet.getInt("age"));
return user;
}
});
return lists;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
}
需要注意的是,之前的介绍中Resource类不需要继承和实现,不需要使用注解,但是在本项目中,我们需要在Resource中注入UserService,因此也需要将Resource的创建交给Spring进行管理。
@Component//resource转换为spring组件
@Path("/user")
public class UserResource {
@Resource
private UserService userService;
@Path("/add")
@POST
public Response add(@FormParam("id") String id,
@FormParam("name") String name,
@FormParam("age") int age){
User user = new User();
user.setAge(age);
user.setName(name);
user.setId(id);
userService.insert(user);
return JerseyTool.returnSuccess(new ResponseDto("OK","添加用户成功").toString());
}
/**
*
* 查询所有用户信息
* @return
*/
@GET
@Path("/getAll")
public Response getAll(){
List<User> users = userService.selectAll();
return JerseyTool.returnSuccess(JSON.toJSONString(users));
}
/**
* 根据用户id查询用户
* @param id
* @return
*/
@GET
@Path("/getById")
public Response getById(@QueryParam("id") String id){
User user = userService.selectById(id);
return JerseyTool.returnSuccess(JSON.toJSONString(user));
}
/**
* 更新用户信息
* @param id
* @param name
* @param age
* @return
*/
@PUT
@Path("update")
public Response update(@FormParam("id") String id,
@FormParam("name") String name,
@FormParam("age") int age){
User user = new User();
user.setAge(age);
user.setName(name);
user.setId(id);
userService.update(user);
return JerseyTool.returnSuccess(new ResponseDto("OK","添加用户成功").toString());
}
/**
* 根据id删除用户
* @param id
* @return
*/
@DELETE
@Path("/delete")
public Response deleteById(@QueryParam("id") String id){
userService.delete(id);
return JerseyTool.returnSuccess(new ResponseDto("OK","删除用户成功").toString());
}
}
为了更方便的响应json结果,我提供了ResponseDto。
public class ResponseDto {
private String code;
private String msg;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public ResponseDto(String code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public String toString() {
JSONObject json = new JSONObject();
json.put("code",getCode());
json.put("msg",getMsg());
return json.toString();
}
}
通过Main方法启动程序.
为了更方便的测试,我们使用谷歌浏览器Postman插件进行测试。
1、添加用户
2、查询所有用户
3、根据id查询用户
4、删除用户
Jersey系列相关源码请访问: Jersey_learing项目