jdbctemplate-spring的jdbcTemplate在静态方法中怎么使用?

问题描述

spring的jdbcTemplate在静态方法中怎么使用?

public class UtilsDao {

@Autowired
@Qualifier("JdbcTemplate")
private static JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    UtilsDao.jdbcTemplate = jdbcTemplate;
}

 public static JSONArray queryList2Json(String sql){
    List<Map<String, Object>> lists = jdbcTemplate.queryForList(sql);
    JSONArray a = JSONArray.fromObject(lists);
    System.out.println(a.toString());
    return a;
 }

}

请问下在静态方法中怎么获取不到jdbcTemplate实例?jdbcTemplate是个null值

解决方案

不论是注入jdbcTemplate还是applicationContext,都有静态获取的问题,建议配置SpringContextUtil,存静态的context就可以了,其他的只需要getBean即可获取

解决方案二:

不要使用静态方法,jdbcTemplate原本就是单例的。

解决方案三:

那用的spring,在静态方法里怎么连接数据库请求数据?
还要用conn.prepareStatemate("")吗?

解决方案四:

其实就是静态和普通的加载顺序问题导致没有注入实体。
可以换个思路,因为静态方法是在类加载的时候就已经读进JVM了,所以楼主可以再new完对象之后给再给jdbc赋值

解决方案五:

思路是这样子的
@Resource(name="jdbcTemplate")
private JdbcTemplate jdbcTemplate;

    public static JdbcTemplate staticJdbcTemplate;

@PostConstruct //在构造对象完之后调用初始化
public void init() {

class.staticJdbcTemplate = this.jdbcTemplate;

}

解决方案六:

系统初始化的时候就应该生成实例,这样就可以,或者重写 spring 初始化方法就可以

时间: 2024-10-31 05:28:13

jdbctemplate-spring的jdbcTemplate在静态方法中怎么使用?的相关文章

用Spring的JdbcTemplate实现分页功能

分页     最近使用了spring中的JdbcTemplate实现数据库的查询和插入操作,发现spring的JdbcTemplate 不象HibernateTemplate那么好,已经实现了分页功能.所以要自己实现,使用getJdbcTemplate().queryForList(string sql)得到的结果集是所有的. 如果你的查询有10000条记录,或者更多,速度肯定慢了,当然你可以通过resultset中的游标控制查询的起始和结束.我这里用的是Oracle数据库,使用伪列ROWNUM

Spring.Net在Mvc4.0中应用的说明

案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll       2.修改Global文件 (SpringMvcApplication)       3.控制器添加属性     4.WebConfig配置   <!--必须紧跟着configuration之后-->   <configSections>     <sectionGroup name="spring

spring事务-spring如何在只读事务中提交数据

问题描述 spring如何在只读事务中提交数据 现在有个需求,我现在要去查询一个对象,如果这个对象不存在在,就初始创建一个,但这个查询是只读事务,没办法提交.有什么解决方案? 一种方法就是将这个查询方法加读写事务,这个不是我希望的,因为这个方法大部分时候都是查询的.大家有什么解决方案可以在只读事务中转换为读写事务? 解决方案 只读事务中创建不合适.是不是可以在只读事务中通过消息等方式发送给读写事务进行数据添加. 关键添加后的数据是否在只读事务中要使用.如果需要使用那就得吧只读事务改成读写事务了.

java-如何从静态方法中调用非静态方法?

问题描述 如何从静态方法中调用非静态方法? 我想从静态方法中调用非静态方法: Class SMS{ public static void First_function() { SMS sms = new SMS(); sms.Second_function(); } public void Second_function() { Toast.makeText(getApplicationContext()Hello""1).show(); // This i anable to dis

spring框架,有些类中没有无参构造放方法,但是spring还是可以构造出该实例,它是怎么做到的?

问题描述 spring框架,有些类中没有无参构造放方法,但是spring还是可以构造出该实例,它是怎么做到的? spring的基础是反射,反射是依靠无参构造方法的,但是我的类中没有无参构造放方法,Spring还是给我构造出了实例,Spring是怎么做到的? 解决方案 反射也可以调用有参构造函数甚至私有构造函数的. 没有无参构造函数,你说的是没有写构造函数吧,那么java会产生一个默认的无参数共有构造函数的. 解决方案二: 不写构造器的话,java会默认生成一个无参构造器.写了的话,就不会生成了.

为什么静态方法中不能调用非静态方法或者属性(原理)?

问题描述 2.为什么静态方法中不能调用非静态方法或者属性(原理)?在此感谢! 解决方案 解决方案二:静态方法执行时并没有类的实例解决方案三:引用1楼Icedmilk的回复: 静态方法执行时并没有类的实例

静态方法中,如何得到当前类名?

问题描述 在静态方法中,如何得到当前类名?如:classclass1{staticclass1getNew(){///这里,如何得到当前类名,即class1,///以实现用统一的方法自动创建当前类的实例returnnewclass1();}}在一个方法中访问当前实例,可用this但是,在静态方法中,访问当前类,有什么办法吗? 解决方案 解决方案二:古怪的问题,古怪的想法既然这个人把代码写到了这个class底下,那么他就看不到class后面有个大大的class1吗?解决方案三:不要没事找事,无端自

spring +springmvc+mybatis,service中调用dao接口报空

问题描述 spring +springmvc+mybatis,service中调用dao接口报空 搭建ssm,启动项目没问题,但是在service实现类中调用dao接口时,对象loginDao对象是空的,错误信息如下 log4j:ERROR Error occured while converting date. java.lang.NullPointerException at java.lang.System.arraycopy(Native Method) at java.lang.Abs

spring mvc aop获取controller中的方法中的参数名称

问题描述 spring mvc aop获取controller中的方法中的参数名称 //配置切入点,该方法无方法体,主要为方便同类中其他方法使用此处配置的切入点 //"execution(* com.nong.aop.*.controller..*.*(..))" /*@Pointcut("execution(* com.nong.aop.*.controller.*(..))") public void aspect(){} // 配置前置通知,使用在方法aspe