使用springMVC怎么能随时获取到jdbcTemplate进行sql查询

叶落花开 发布于 2012/07/11 11:58
阅读 3K+
收藏 1

在程序里有些地方我想直接使用JdbcTemplate进行sql更删改查,于是乎就要能直接获取 JdbcTemplate 了,于是乎我就得到了下边这个很笨的方法,求解更简便的方法....

1.spring配置文件:

<!-- 定义jdbcTemplate -->

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

        <property name="dataSource"><ref bean="dataSource"/></property>

    </bean></pre>


2.Dao

public interface BaseDao {
	public JdbcTemplate getJdbcTemplate();
}

@Repository
public class BaseDaoImpl implements BaseDao {
	
	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
	}

}

3.Service

public interface BaseService {
	public JdbcTemplate getJdbcTemplate();
}

@Service
public class BaseServiceImpl implements BaseService {
	@Resource
	private BaseDao baseDao;
	
	public JdbcTemplate getJdbcTemplate() {
        return this.baseDao.getJdbcTemplate();
	}

}

 
4.DbUtil

public class  DbUti{

	@Resource

	private static BaseService baseService;

	

	public static JdbcTemplate getJdbcTemplate() {

        return DbUtil.baseService.getJdbcTemplate();

	}

}


5.使用

DbUtil.getJdbcTemplate().queryForInt("select count(1) counts from user");


这是我摸索了半天想出来的方法,我承认代码很笨且很烂,求解有么有更好的方法....

加载中
0
开源中国董事会主席
开源中国董事会主席
好复杂 使用注解就可以了
0
开源中国董事会主席
开源中国董事会主席
public interface BaseDao {
}

01    @Repository
02    public class BaseDaoImpl implements BaseDao {
03         
04        @Resource
05        private JdbcTemplate jdbcTemplate(这个得和jdbctemplate bean id一致);
10    
        public List<Map<String, Object>> getAll(){
            return jdbcTemplate.queryForList("sql");
        }
11    }
开源中国董事会主席
开源中国董事会主席
回复 @叶落花开 : 直接就可以用了啊
叶落花开
叶落花开
回复 @腾勇 : 你这个怎么调用?
开源中国董事会主席
开源中国董事会主席
回复 @叶落花开 : 就我上面那个就就可以 使用 @Resource 注解
叶落花开
叶落花开
是一致的啊,我想知道有啥更简单的方法...
0
大东哥
大东哥

直接监听servlet容器启动的事件,再自己写个SpringUtils类,把context设置一下就行啦。

SpringUtils.context = xxx;

spring管理的东西不都拿到了嘛。

 

叶落花开
叶落花开
回复 @叶落花开 :找了下,貌似是是这个 applicationContext
叶落花开
叶落花开
回复 @大东哥 : ....不知道是哪个,求指教
大东哥
大东哥
你直接new当然又初始化了。spring不是提供了一个工具获取servlet绑定的spring上下文吗?
叶落花开
叶落花开
ApplicationContext ctx = new ClassPathXmlApplicationContext("jdbc-context.xml"); jdbcTemplate= (JdbcTemplate)ctx.getBean("jdbcTemplate"); 这么写我也写过,但是我不知道这么写是不是又初始化了一遍连接池....
0
大东哥
大东哥
 import javax.servlet.ServletContextEvent;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class SpringContextListener extends ContextLoaderListener{
	

	public SpringContextListener() {
		super();
	}
	
	public void contextInitialized(ServletContextEvent contextEvent) {
		super.contextInitialized(contextEvent);				

		SpringUtils.context =WebApplicationContextUtils.getWebApplicationContext(contextEvent.getServletContext());
	}

}

SpringUtils.context.getBean("");

大东哥
大东哥
回复 @叶落花开 : 可能吧。
叶落花开
叶落花开
回复 @大东哥 : 我觉得是listener比spring servlet先启动导致的问题...
叶落花开
叶落花开
回复 @大东哥 : 哦 我用的是springMVC
叶落花开
叶落花开
回复 @大东哥 : 现在连我这个帖子里自己的方法都用不了啦,真心很崩溃....
大东哥
大东哥
回复 @叶落花开 : 那是其它错误了,我这方法没问题的。
下一页
0
大东哥
大东哥
public class SpringUtils{
      public static ApplicationContext context;

}

 

叶落花开
叶落花开
抹一把汗...
0
叶落花开
叶落花开

@腾勇 ,@大龙哥

我通过该贴终于实现了我想要的   http://www.vijun.com/web/spring/2012/03/5f84f4d9363e806b01364d0582b7002e.html  ,感谢你们的回复......

返回顶部
顶部