Jersey JdbcTemplate的使用

Jersey JdbcTemplate的使用

经过前面的介绍,我们可以实现简单RESTful服务了,并使用map集合模拟了,学生信息的增删改查。但是实际开发中我们更多的是与数据库打交道,使用数据库来处理数据,因此在下面的章节中我们将会介绍Jersey框架与数据库进行交互的操作。
本章节我们介绍Jersey与JdbcTemplate的结合使用。

引入依赖

在spring与Jersey整合的基础上需要加上spring Jdbc的支持,以及mysql的数据库驱动

  

  org.springframework
  spring-jdbc
  4.2.1.RELEASE



  mysql
  mysql-connector-java
  6.0.3

创建testlx数据库 user表

  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;

创建User类

  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文件

  

    
    
    


spring-base.xml文件

  
    
    
    
    

spring-datasource.xml文件

  

    
    
        
        
        
        
    

    
    
        
    

UserService接口以及实现

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 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 selectAll() {
        try {
            String sql = "select * from user " ;
            List lists;
            lists = jdbcTemplate.query(sql, new RowMapper() {

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

    }
}

服务提供UserResource

需要注意的是,之前的介绍中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 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、添加用户
Jersey JdbcTemplate的使用_第1张图片
2、查询所有用户
Jersey JdbcTemplate的使用_第2张图片
3、根据id查询用户
Jersey JdbcTemplate的使用_第3张图片
4、删除用户
Jersey JdbcTemplate的使用_第4张图片

Jersey系列相关源码请访问: Jersey_learing项目

作者:qq_28334711 发表于2016/11/18 17:06:00 原文链接
阅读:14 评论:0 查看评论

你可能感兴趣的:(jersey,jdbctemplate)