Template模板类使用

本文详细介绍了Spring框架中常用的模版类,包括RestTemplate、JdbcTemplate、MongoTemplate、RedisTemplate和ElasticsearchTemplate等,提供了丰富的示例代码,有助于开发者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Template模版类

Template模版类的使用能大大简化开发过程,以下为常用的一些模板类介绍:
-  RestTemplate
-  JdbcTemplate
-  MongoTemplate
-   RedisTemplate
-  *ElasticsearchTemplate
-  引申:HiveTemplate、HbaseTemplate、…

RestTemplate

借助 RestTemplate,我们能够方便地使用REST资源,常用的方法有:

  • getForEntity() 发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象
  • getForObject() 发送一个HTTP GET请求,返回的请求体将映射为一个对象
  • postForEntity() POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得
    到的
  • postForObject() POST 数据到一个URL,返回根据响应体匹配形成的对象

使用示例如下:

        // 通过RestTemplate的post方法实现登录,并获取cookie
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);

        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
        map.add("prama1", prama1);
        map.add("prama2", prama2);

        HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
        ResponseEntity<String> response = restTemplate.postForEntity(loginUrl, request, String.class);
        List<String> cookie = response.getHeaders().get("Set-Cookie");
        logger.info("获得cookie : " + cookie);

JdbcTemplate

JbbcTemplate在Spring框架中进行使用时,只需在properties文件中配置好连接,即可通过Autowire注解实现参数注入,properties文件配置如下:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db?characterEncoding=utf-8
spring.datasource.username=dev
spring.datasource.password=dev
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

示例代码如下:

    @Autowired
    private JdbcTemplate jdbc;

    public List<Entity> query(){
        String sql = "select * from table where status = 1";
        List<Entity> list = jdbc.query(sql, new RowMapper(){
            @Override
            public Entity mapRow(ResultSet resultSet, int i) throws SQLException {
                Entity Entity = new Entity();
                Entity.setId(resultSet.getLong("id"));
                Entity.setA(resultSet.getString("a"));
                Entity.setB(resultSet.getString("b"));
                Entity.setC(resultSet.getString("c"));
                return Entity;
            }
        });
        return list;
    }

    @Transactional
    public int update(Entity entity){
        String sql="update table set " +
                        "a = ? ," +
                        "b = ? , " +
                        "c = ? ," +
                   "where id = ?";
        return jdbc.update(sql, new Object[] {
                entity.getA(),
                entity.getB(),
                entity.getC(),
                entity.getId()}
        );
    }

MongoTemplate

MongoTemplate在Spring框架中进行使用时,同样只需在properties文件中配置好连接,即可通过Autowire注解实现参数注入,properties文件配置如下:

spring.data.mongodb.host = 127.0.01
spring.data.mongodb.port = 27017
spring.data.mongodb.database = DEV

示例代码如下:

   @Autowired
    private MongoTemplate mongoTemplate;

    public Map<String,String> queryByGroup(Date fromDate){
        Date date = DateUtil.getBenginOfToday(fromDate);
        // 聚合查询 group by
        Criteria query = Criteria.where("crawlerTime").gte(date);
        GroupOperation groupOperation = Aggregation.group("channelID")
                .count().as("count");
        Aggregation agg = Aggregation.newAggregation(
                BadOffline.class,Aggregation.match(query),groupOperation);
        AggregationResults<Document> a = mongoTemplate.aggregate(
                agg, Entity.class, Document.class);

        Iterator<Document> iterator =  a.iterator();
        Map<String, String> result = new HashMap<>();
        while (iterator.hasNext()){
            Document temp = iterator.next();
            result.put(temp.get("_id").toString(),temp.get("count").toString());
//            System.out.println("id====>" + temp.get("_id") + "  count====>" + temp.get("count") );
        }
        return result;
    }

RedisTemplate

RedisTemplate在Spring框架中进行使用时,同样只需在properties文件中配置好连接,即可通过Autowire注解实现参数注入,properties文件配置如下:

# Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=pass
spring.redis.pool.max-active=200
spring.redis.pool.max-wait=1000
spring.redis.pool.max-idle=60
#spring.redis.pool.min-idle=0
spring.redis.timeout=100000

示例代码如下:

@Repository  
public class RedisDao {  

    @Autowired  
    private StringRedisTemplate template;  

    public  void setKey(String key,String value){  
        ValueOperations<String, String> ops = template.opsForValue();  
//        ops.set(key,value,1, TimeUnit.MINUTES);//1分钟过期
        ops.set(key,value);//永久保存
    }  

    public Long getValue(String key){
        ValueOperations<String, String> ops = this.template.opsForValue();
        return Long.parseLong(ops.get(key));
    }  
}  

ElasticsearchTemplate

目前,ElasticsearchTemplate只支持到ES5.0版本,对高版本暂不支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值