mysql jdbc框架配置文件_springmvc+jdbc+mysql+bootstrap整合,并将sql语句提取到xml中

由于最近工作较轻松,所以想整合一套SpringMVC框架。一来可以记录自己的工作过程,二来可以给读者提供一些帮助。之所以没有用mybatis而是采用了jdbc来操作数据库是因为jdbc要比mybatis快得多,毕竟mybatis对jdbc做了一层包装,尽管这层包装并不厚,但还是足够影响效率的。因为个人并不喜欢在Java程序中写sql语句,所以将sql语句提取到xml中,在项目启动的过程中读取xml,并将每条sql的id存储成静态变量,在程序中直接调用sql对应的静态变量即可。

别的不多说,直接进入正题(以下项目是基于maven环境的)。

一、目录结构

a4c26d1e5885305701be709a3d33442f.png

我的目录结构如上图,标准的maven结构,大家或许会注意到我的xml文件中包含mybatis的相关配置,那是因为之前整合mybatis留下的,没有来得及删,本文使用的是jdbc。

二、配置文件详解

首先是jdbc.properties,所在目录为src/main/resources/config/properties/jdbc.properties,里面存储的是jdbc的url、user、password等,内容如下;

#mysql datasource

driverClass=com.mysql.jdbc.Driver

jdbc_url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-

8&autoReconnect=true&failOverReadOnly=false

jdbc_user=root

jdbc_password=root

与之对应的是property.xml,所在目录为src\main\resources\config\spring\property.xml,用于读取jdbc.properties,代码如下:

classpath:config/properties/jdbc.properties

接下来是jdbc.xml,所在目录为src/main/resources/config/spring/jdbc.xml,在该项目中datasource使用的是阿里数据源,主要代码如下:

destroy-method="close">

代码和注释都很详细,这里我就不多说了。

下面是springmvc配置文件springmvc.xml,在该xml中开启扫描,扫描@controller

由于下面的代码在发博文的时候提示为非法字符,所以就删掉了,读者可以去我的源代码中去

看,源代码在最后(真是服了~~~)。

添加视图解释器,用于从controller中返回到页面

为了保证DispatcherServlet不拦截以下静态资源,需要设置静态文件访问,如下:

location="/images/" mapping="/images

public abstract  class BaseJDBCDao{

private static Logger

log = Logger.getLogger(BaseJDBCDao.class);

public void

closeAllConnection(Connection connection,Statement pstmt,ResultSet

rs) {

try {

if(rs !=

null) {

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

log.error(e.getMessage());

}finally {

try

{

if(pstmt != null) {

pstmt.close();

}

} catch

(SQLException e) {

e.printStackTrace();

log.error(e.getMessage());

}finally{

try {

if(connection != null) {

connection.close();

}

} catch (SQLException e)

{

e.printStackTrace();

log.error(e.getMessage());

}

}

}

}

}

新建SystemConstant类,它用于存储静态变量,它里面的每个静态变量都代表一条sql,代码如下。

public class SystemConstant {

public static String

SELECT_ALL_FRIEND;

}

新建StartupListener类,它实现ServletContextListener接口,用于在项目启动初始化上下文时读取存储sql的xml并将其赋值到上面SystemContant类静态变量中,代码如下:

public class StartupListener implements

ServletContextListener{

@Override

public void

contextDestroyed(ServletContextEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public void

contextInitialized(ServletContextEvent arg0) {

System.out.println("-----------");

JDomXml();

}

@SuppressWarnings("unchecked")

public void

JDomXml(){

SAXBuilder builder = new

SAXBuilder();

Document doc;

try {

doc =

builder.build(new File("D://data_10k2.xml"));

Element

foo = doc.getRootElement();

List

allChildren = foo.getChildren();

for (int i

= 0; i < allChildren.size(); i++) {

SystemConstant.SELECT_ALL_FRIEND=((Element)

allChildren.get(i)).getChild("selectAllFriend").getText();

}

} catch (JDOMException e) {

// TODO

Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO

Auto-generated catch block

e.printStackTrace();

}

}

}

上面用到了org.jdom工具,它可以用于解析xml,jar包可以百度到,后面项目源码中也会有。

data_10k2.xml内容如下:

select * from user

当然,你也可以将data_10k2.xml放到项目中。

下面是controller、service、dao中的代码,没什么好说的,直接贴:

@Controller

public class TestController {

@Autowired private TestService

testService;

private List

userList;

@RequestMapping(value="toTestList", method =

RequestMethod.GET)

public String toTestList(Model model,Map map,

HttpServletRequest request){

userList=testService.getAllFriend();

map.put("userList",

userList);

return

"jsp/test_list1";

}

}

TestEntity是实体类,根据自己情况来写。test_list1.jsp所在目录为src\main\webapp\WEB-INF\pages\jsp\test_list1.jsp。

TestServiceImpl中的代码如下:

@Transactional

@Service

public class TestServiceImpl implements

TestService{

@Autowired private TestDao

testDao;

@Override

public List getAllFriend()

{

return

testDao.selectAllFriend();

}

}

个人编程习惯将service、dao定义成接口,再定义类实现这些接口。

TestDaoImpl中的代码如下:

public class TestDaoImpl extends BaseJDBCDao implements

TestDao{

@Autowired

private DataSource

dataSource;

@Override

public List

selectAllFriend() {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

List list=new ArrayList();

TestEntity testEntity=new TestEntity();

try {

conn =

dataSource.getConnection();

StringBuilder tempSql = new StringBuilder();

tempSql.append(SystemConstant.SELECT_ALL_FRIEND);

pstmt =

conn.prepareStatement(tempSql.toString());

rs =

pstmt.executeQuery();

while(rs.next()) {

testEntity.setId(rs.getInt("id"));

testEntity.setUname(rs.getString("uname"));

}

} catch (Exception e) {

list=new

ArrayList();

System.out.println(e.getMessage());

} finally {

this.closeAllConnection(conn, pstmt, rs);

}

return list;

}

}

最后,在web.xml中自定义监听类,在项目启动初始化上下文时读取存储sql的xml文件并给系统静态变量赋值。

com.inspur.base.StartupListener

大功告成!将项目添加到tomcat并启动,输入http://localhost:8080/myframe/toTestList,会出现如下页面。

a4c26d1e5885305701be709a3d33442f.png

源代码地址:http://download.csdn.net/detail/fanguoddd/9739577

如果有什么问题或者见解的话欢迎在评论区留言~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值