在已搭建的SSM环境直接执行sql语句

前言

这几天遇到个需求, 需要用Java代码对数据处理后批量执行一些SQL语句, 这种是一次性的需求。
写一个Mapper.xml又显得太繁琐。自己写JDBC又要重新加载数据库驱动创建数据库连接,更累。

思路

编写Class代码不可取。缺点有二:

  1. 修改Class需要重启Tomcat
  2. 需要把Class设置为一个Controller

改为使用JSP。以上两个缺点都没了。

使用JdbcTemplate

因为是一次性的需求。写一个Mapper.xml又显得太繁琐。干脆就直接舍弃获取Mybatis SqlSession的方式。
使用Spring Jdbc自带的JdbcTemplate

Spring配置文件中添加JdbcTemplate Bean

1
2
3
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>

JSP页面获取这个Bean

1
2
3
4
5
6
7
8
9
10
<%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<%
// 1. 获取上下文
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletConfig().getServletContext());
// 2. 获取Bean
JdbcTemplate template = (JdbcTemplate) context.getBean("jdbcTemplate");
// 3. 执行sql语句 ( 使用fastjson转化为json格式 )
List list = template.queryForList("select * from mytable");
out.print("测试:"+ JSONObject.toJSONString(list));
%>