Jersey JdbcTemplate的使用

标签: jersey jdbctemplate | 发表时间:2016-11-19 01:06 | 作者:qq_28334711
出处:http://blog.csdn.net

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>

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

  <?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接口以及实现

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

    }
}

服务提供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<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项目

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

相关 [jersey jdbctemplate] 推荐:

Jersey JdbcTemplate的使用

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

JdbcTemplate学习笔记

- - SQL - 编程语言 - ITeye博客
1、使用JdbcTemplate的execute()方法执行SQL语句. 2、如果是UPDATE或INSERT,用update()方法.    JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等. spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现.

Restful 和 Jersey介绍(Web Service )

- - CSDN博客架构设计推荐文章
REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources) ,使用全球 ID(通常使用 URI)标识. 客户端应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE )操作资源或资源集.

Jersey Rest 异常统一处理机制

- - CSDN博客综合推荐文章
        异常分为运行时异常和非运行时异常,所谓的运行时异常是指那些不需要异常捕获的异常,总是交由虚拟机接管,如:ArrayIndexOutOfBoundsException,我们在写程序时,并没有使用try..catch来捕获它.     以前,我们进行项目开发时,习惯性的喜欢使用大量的try...catch...finally方法来进行异常处理,并且,只是将异常信息保存到log日志中即可,并没有将一些异常信息以可读性的方式返回给前端用户.

给恋人们~超适合搂腰的外套:Jersey Sweater

- Luosky - 爱…稀奇~{新鲜:科技:创意:有趣}
来自工作室Entresuelo1a的创意,Jersey Sweater外套的口袋并不在两侧,而是在腰部——刚好可以让BF把手伸进去,顺便搂住自己的小蛮腰~这两天估计还用不上,等到秋风扫落叶的时候,这外套可就能派上用场了~. 设计师:Entresuelo1a工作室. 亲爱的,这些东西也会对你胃口:. 心跳情侣T恤(8-Bit Dynamic Life Shirt).