栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot 重写JdbcTemplate类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot 重写JdbcTemplate类

Spring Boot 重写JdbcTemplate类

文章目录
  • Spring Boot 重写JdbcTemplate类
  • 前言
  • 一、获取容器中的bean(JdbcTemplate)
  • 二、继承JdbcTemplate类,然后注入到容器中
  • 总结


前言
很多时候在项目中使用JdbcTemplate来进行数据库操作,返回的数据不一定会满足我们的需要,虽然可以在获取数据后对数据进行处理,如果涉及到的数据比较多或者是处理操作具有很多的重复,就可以试一下本文的方法,推荐使用第二种!

一、获取容器中的bean(JdbcTemplate)

1.创建SpringUtils通过beanname获取容器中的bean对象

@Component
public class SpringUtils implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtils.applicationContext = applicationContext;
    }
    public static  T getBean(String beanName) {
        if(applicationContext.containsBean(beanName)){
            return (T) applicationContext.getBean(beanName);
        }else{
            return null;
        }
    }
}

2.编写MyJdbcTemplate类来处理JdbcTemplate的方法返回的数据

@Configuration
public class MyJdbcTemplate{
    JdbcTemplate jdbcTemplate;
    public List> myQueryForList(String sql, @Nullable Object... args) throws DataAccessException {
        this.jdbcTemplate = SpringUtils.getBean("JdbcTemplate");
        List> query = this.jdbcTemplate.queryForList(sql, args);
        //按照业务需要对返回的数据进行处理
        .......
        return query;
    }
}

3.使用MyJdbcTemplate

@Autowired
    private MyJdbcTemplate myJdbcTemplate;

//使用
List> list=myJdbcTemplate.myQueryForList(sql,new Object[]{});

以上是第一种方式的过程,获取容器的中的JdbcTemplate的bean,然后再调用bean对象的相关方法,获取返回的数据再加以处理。

二、继承JdbcTemplate类,然后注入到容器中

1.MyJdbcTemplateNew 继承JdbcTemplate类

public class MyJdbcTemplateNew extends JdbcTemplate {
    public MyJdbcTemplateNew(){
        super();
    }
    public MyJdbcTemplateNew(DataSource dataSource) {
        super(dataSource);
    }
    public MyJdbcTemplateNew(DataSource dataSource, boolean lazyInit) {
        super(dataSource,lazyInit);
    }
    
    //对JdbcTemplate 类中的queryForList方法进行重写
    @Override
    public List> queryForList(String sql, @Nullable Object... args) throws DataAccessException {
        List> query = this.query(sql, args, this.getColumnMapRowMapper());
       //按照业务需要对返回的数据进行处理
        .......
        return query;
    }

2.利用@Configuration和@Bean 注解将MyJdbcTemplateNew实例注入到容器中

@Configuration 
public class ConfigFile {
    @Bean 
    public MyJdbcTemplateNew MyJdbcTemplateNew(@Nullable DataSource dataSource){
        if(dataSource==null){
            return new MyJdbcTemplateNew();
        }else{
            return new MyJdbcTemplateNew(dataSource);
        }
    }
}

3.使用MyJdbcTemplateNew

@Autowired
    MyJdbcTemplateNew myJdbcTemplateNew;

//调用
List> maps = myJdbcTemplateNew.queryForList(sql, new Object[]{)});
总结

以上的两种方式都可以,第一种是按照自己的方法来的,有些乱,推荐第二种!希望会有一些帮助!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979443.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号