Spring 使java开发变得容易,为开发者节省了不少时间,其中包括数据库的连接与使用。下面将使用三种方式连接数据库:传统的jdbc方式、springjdbc方式。
1.传统jdbc方式
或者采用maven导入jar包
mysql
mysql-connector-java
5.1.38
代码如下:
//1通过直接赋值方式配置
//String url = "jdbc:mysql:///dbname";
//String user = "root";
//String password = "";
//String driverClass = "com.mysql.jdbc.Driver";
//2通过.properties配置文件读取配置
InputStream inputStream = JDBCUtil.class.getClassLoader().getResourceAsStream("dbconfig.properties");
Properties properties = newProperties();
properties.load(inputStream);
String url = properties.getProperty("jdbc.url");
String user = properties.getProperty("jdbc.user");
String password = properties.getProperty("jdbc.password");
String driverClass = properties.getProperty("jdbc.driverClass");
//连接操作
Class.forName(driverClass);
Connection connection =DriverManager.getConnection(url, user, password);
//crud(增删改查)操作
String sql = "sql_crud_statement";
preparedStatement =connection.prepareStatement(sql);
resultSet =preparedStatement.executeQuery();
//解析结果
Student student = null;
while(resultSet.next()) {
int id = resultSet.getInt("id");
int age = resultSet.getInt("age");
//do sth
}
分析:这种传统连接方式实现起来很简单,但是代码量相对较多,而且用完之后还要有手动释放资源的操作,相对的需要有很多重读代码。
2.srping jdbc方式
当然,首要任务是引入包,涉及的包有一点小多,所以首选maven来导入
mysql
mysql-connector-java
5.1.38
org.springframework
spring-jdbc
4.3.5.RELEASE
org.springframework
spring-context
4.3.5.RELEASE
配置好之后就可以进行令人激动地链接数据库操作了
大致流程是首先通过框架里面的上下文机制获取jdbcTemplate(数据模板)对象,然后再通过jdbcTemplate对象进行curd操作:
1.上下文的xml配置beans.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
2.加载xml获取jdbcTemplate对象,实现curd
ctx = new ClassPathXmlApplicationContext("beans.xml");
jdbcTemplate = ctx.getBean(“jdbcTemplate”);
jdbcTemplate.query(sql, new RowCallbackHandler(){
// 重写processRow 来实现自己的循环处理结果集
@Override
public void processRow(ResultSet rs) throws SQLException {
int id = rs.getInt("id");
String name = rs.getString("name");
//do sth
}
});
分析:这种方式虽然需要配置上下文,但是实现起来很容易,实现的代码就那么几行,看着效果不错,而且jdbcTemplate对象是已经实现的对象,我们只需要重写里面的processRow方法就可以实现。相比传统方式,这种方法精进了不少,也不用考虑释放资源。
然而这不是框架想要的全部,如果想要其他操作,比如分页操作,实现起来也不是很容易,所有的sql还需要自己写,也不是很方便啊,那么问题来了,有没有真正的“好”的方式来实现呢?下一篇将分析下spring实现curd以及其优点。