前言

上文书我写了Spring的核心部分控制反转和依赖注入,后来又衔接了注解,在这后面本来是应该写Spring AOP的,但我觉得对于初学者来说,这部分可以先放放,先入门,把核心理解后再回过头来看这些我觉得效果更好,不知道说的对不对,要是理解不当,还望指教。此篇为Spring的数据库编程,主要讲jdbcTemplate,让初学者直接上手。

数据库切入

数据库编程是互联网编程的基础,Spring框架为开发者提供了JDBC模板模式,即jdbcTemplate,它可以简化许多代码,需要提醒的是jdbcTemplate在实际应用中并不常用,但我觉得对新手来说苍蝇再小也是肉,要想往前走,就得把这些小肉先吃了。

Spring JDBC配置

使用Spring JDBC操作数据库,需要对其进行配置,配置如下































配置JDBC模板时需要将dataSource注入到jdbcTemplate,而在数据访问层(Dao类)需要使用jdbcTemplate时也需要将jdbc Template注入到对应的Bean中,我在这演示用最简单的注解注入

@Repository
(
"userDao"
)

public

class

UserDaoImpl

implements

UserDao

{

@Autowired

//使用配置文件中的JDBC模板

private

JdbcTemplate
 jdbcTemplate
;

}

Spring Jdbc Template的常用方法

在上面我们获取了JDBC模板,下面我来说如何使用它。首先需要了解JdbcTemplate常用的方法,该类的常用方法是update和query.

1、public int update(String sql,Object args[])

该方法可以对数据表进行增加、修改、删除等操作。使用args[]设置SQL语句中的参数,并返回更新的行数。

示例如下:

public

void
 add() {

String
 insertSql = 
"insert into user values(null,?,?)"
;

Object
 parem1[] = {
"成功"
,
"123456"
};

   jdbcTemplate.update(insertSql,parem1);

System
.out.println(
"UserDao中的添加功能实现了"
);

}

2、public List query(String sql,RowMapper rowMapper,Object args[])

该方法可以对数据表进行查询操作,rowMapper将结果集映射到用户自定义的类中(前提是自定义类中的属性要与数据表的字段对应)。

示例如下:

public

void
 query() {

String
 selectSql = 
"select * from user"
;

RowMapper
<
User
> rowMapper = 
new

BeanPropertyRowMapper
<
User
>(
User
.
class
);

List
<
User
> list = jdbcTemplate.query(selectSql,rowMapper,
null
);

System
.out.println(
"UserDao中的查询功能实现了"
);

}

案例辅助

Pom.xml






junit



junit



4.11



test







javax.servlet



javax.servlet-api



3.1.0







javax.servlet



jstl



1.2







mysql



mysql-connector-java



5.1.38









org.springframework



spring-core



5.1.5.RELEASE







org.springframework



spring-beans



5.1.5.RELEASE







org.springframework



spring-context



5.1.5.RELEASE







org.springframework



spring-aop



5.1.5.RELEASE







org.springframework



spring-jdbc



5.1.5.RELEASE







org.springframework



spring-web



5.1.5.RELEASE







org.springframework



spring-webmvc



5.1.5.RELEASE







org.springframework



spring-expression



5.1.5.RELEASE







org.springframework



spring-tx



5.1.5.RELEASE









commons-logging



commons-logging



1.2




spring-config.xml















































































User

package
 com.my.pojo;

public

class

User
 {

private

int
 id;

private

String
 username;

private

String
 password;

public

User
() {

   }

public

User
(
int
 id, 
String
 username, 
String
 password) {

this
.id = id;

this
.username = username;

this
.password = password;

   }

public

int
 getId() {

return
 id;

   }

public

void
 setId(
int
 id) {

this
.id = id;

   }

public

String
 getUsername() {

return
 username;

   }

public

void
 setUsername(
String
 username) {

this
.username = username;

   }

public

String
 getPassword() {

return
 password;

   }

public

void
 setPassword(
String
 password) {

this
.password = password;

   }

@Override

public

String
 toString() {

return

"User{"
 +

"id="
 + id +

", username='"
 + username + 
'''
 +

", password='"
 + password + 
'''
 +

'}'
;

   }

}

UserDao

package
 com.my.dao;

public

interface

UserDao
 {

public

void
 add();

public

void

delete
();

public

void
 update();

public

void
 query();

}

UserDaoImpl

package
 com.my.dao.impl;

import
 com.my.dao.
UserDao
;

import
 com.my.pojo.
User
;

import
 org.springframework.beans.factory.annotation.
Autowired
;

import
 org.springframework.jdbc.core.
BeanPropertyRowMapper
;

import
 org.springframework.jdbc.core.
JdbcTemplate
;

import
 org.springframework.jdbc.core.
RowMapper
;

import
 org.springframework.stereotype.
Repository
;

import
 java.util.
List
;

@Repository
(
"userDao"
)

public

class

UserDaoImpl

implements

UserDao
 {

@Autowired

//使用配置文件中的JDBC模板

private

JdbcTemplate
 jdbcTemplate;

@Override

public

void
 add() {

String
 insertSql = 
"insert into user values(null,?,?)"
;

for
 (
int
 i=
0
;i<
15
;i++){

Object
 parem1[] = {
"成功"
,
"123456"
};

           jdbcTemplate.update(insertSql,parem1);

       }

System
.out.println(
"UserDao中的添加功能实现了"
);

   }

@Override

public

void

delete
() {

String
 deleteSql = 
"delete from user where id=?"
;

Object
 parem2[] = {
5
};

       jdbcTemplate.update(deleteSql,parem2);

System
.out.println(
"UserDao中的删除功能实现了"
);

   }

@Override

public

void
 update() {

String
 updateSql = 
"update user set username=? , password=? where id =?"
;

Object
 parem3[] = {
"修改"
,
"654321"
,
3
};

       jdbcTemplate.update(updateSql,parem3);

System
.out.println(
"UserDao中的修改功能实现了"
);

   }

@Override

public

void
 query() {

String
 selectSql = 
"select * from user"
;

RowMapper
<
User
> rowMapper = 
new

BeanPropertyRowMapper
<
User
>(
User
.
class
);

List
<
User
> list = jdbcTemplate.query(selectSql,rowMapper,
null
);

System
.out.println(
"UserDao中的查询功能实现了"
);

for
 (
User
 user : list){

System
.out.println(user);

       }

   }

}

测试Test3

package
 com.my.test;

import
 com.my.dao.
UserDao
;

import
 org.springframework.beans.factory.annotation.
Autowired
;

import
 org.springframework.context.
ApplicationContext
;

import
 org.springframework.context.support.
ClassPathXmlApplicationContext
;

public

class

Test3
 {

@Autowired

private

UserDao
 userDao;

public

static

void
 main(
String
[] args) {

ApplicationContext
 appCon = 
new

ClassPathXmlApplicationContext
(
"spring-config.xml"
);

//从容器中获取目标对象

UserDao
 userDao = (
UserDao
) appCon.getBean(
"userDao"
);

//userDao.add();

       userDao.
delete
();

       userDao.update();

       userDao.query();

   }

}

测试结果

Spring的数据库编程浅入浅出—不吹牛逼不装逼_第1张图片

Spring的数据库编程浅入浅出—不吹牛逼不装逼_第2张图片

结束

对于Spring JbdcTemplate的讲解到此结束,对于新手来说没必要太复杂,能完成增删改查做个入门即可,等了解了再详细学习才有帮助,希望能对一些需要的朋友有用吧。

欲知下文如何,请看下回讲解。
Spring的数据库编程浅入浅出—不吹牛逼不装逼_第3张图片