整理了一下java spring框架的jdbc,首先说明一下这个jdbc是在myeclipse下配置的,适合初学者。
第一步我们在myeclipse下建立一个web项目,然后右击 项目名称 鼠标移动到 myeclipse 下,然后再移动到右边的add spring capabilities ,如图所示:
第二步,我们给项目加包spring3.0版本,并且添加四个包,把包复制到lib的目录下,否则可能提示你的项目中没有添加包,配置完之后我们就发现我们的项目多了一个
“applicationContext.xml”配置文件 和lib目录下的许多包。第二步的配置如图所示:
第三步,给项目添加一个mysql的数据驱动包,不懂的同学可以私聊我。并且使用一个数据库,数据库表的信息如下
mysql> desc user;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| pwd | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
第四步,配置applicationContext.xml文件,直接给代码
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 获取数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- mysql数据库的驱动 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<!-- 数据库的地址-->
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<!-- 数据库名 -->
<property name="username" value="root"></property>
<!-- 数据库密码,我的数据库没设置密码,所以为空 -->
<property name="password" value=""></property>
</bean>
<!-- jdbc的模板类-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 给模板的变量dataSource赋值,指向第一个bean的id-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 我们自己定义的一个类,如果我们还没有userDAO这个类,请暂时不要下面的配置,后面写完UserDAO这个类再补上去-->
<bean id="userdao" class="UserDAO">
<!-- 给userdao的变量jdbcTemplate赋值-->
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
第五步,写一个封装类UserVO 也就是javaBean,里面的构造方法不能少,否则可能导致不能实例化或者参数多与少。废话不多说,给出具体代码:
public class UserVO {
private int id;
private String name;
private String pwd;
public UserVO() {
super();
}
public UserVO(int id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
public UserVO(String name, String pwd) {
super();
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
第六步,写一个dao的继承类,里面写我们增删改查的方法,主要是让其它的dao子类继承这个类的方法。很有效率的一段代码,我只写了五个,下面给出具体代码:
import java.util.List;
public interface UserDAOInterface {
public void insert(UserVO uservo);
public void delete(int id);
public void update(UserVO uservo);
public UserVO select(int id);
public List find();
}
第七步,我们可以写我们的dao子类了,只要继承我们第六步的接口类即可继承5个方法:代码如下:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
public class UserDAO implements UserDAOInterface {
private JdbcTemplate jdbcTemplate;
/*
* 查询所有的数据信息
* (non-Javadoc)
* @see UserDAOInterface#find()
*/
public List find(){
String sql="select * from user";
return jdbcTemplate.query(sql, new UserMapper());
}
/*
*
* 使用rowMapper 19行用到, 因为query方法不能直接放回一个数组,所以我们只能通过rowMapper赋值给uservo;
*
* RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装
*/
private static final class UserMapper implements RowMapper{
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
// TODO Auto-generated method stub
UserVO uservo=new UserVO();
uservo.setId(rs.getInt("id"));
uservo.setName(rs.getString("name"));
uservo.setPwd(rs.getString("pwd"));
return uservo;
}
}
/*
* 删除信息
* (non-Javadoc)
* @see UserDAOInterface#delete(int)
*/
public void delete(int id) {
// TODO Auto-generated method stub
String sql="delete from user where id=?";
jdbcTemplate.update(sql,id);
}
/*
* 增加信息
* (non-Javadoc)
* @see UserDAOInterface#insert(UserVO)
*/
public void insert(UserVO uservo) {
// TODO Auto-generated method stub
String sql=" insert into user (name,pwd) values(?,?)";
jdbcTemplate.update(sql,new Object[]{
uservo.getName(),uservo.getPwd()
});
}
/*
* 查询信息
* (non-Javadoc)
* @see UserDAOInterface#select(int)
*/
public UserVO select(int id) {
// TODO Auto-generated method stub
String sql="select * from user where id=?";
return jdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(UserVO.class),id);
}
/*
* 更新信息
* (non-Javadoc)
* @see UserDAOInterface#update(UserVO)
*/
public void update(UserVO uservo) {
// TODO Auto-generated method stub
String sql="update user set name=?,pwd=? where id=?";
jdbcTemplate.update(sql,uservo.getName(),uservo.getPwd(),uservo.getId());
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
}
第八步就是给出我的测试代码:
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
/*DataSource dataSource=(DataSource) ac.getBean("dataSource");
System.out.println("dataSource--------"+dataSource);*/
UserDAO userdao=(UserDAO) ac.getBean("userdao");
//增加信息
//UserVO uservo=new UserVO("123","123");
//userdao.insert(uservo);
//删除信息
//userdao.delete(22);
//修改信息
//UserVO uservo=new UserVO(23,"lisi","123456");
//userdao.update(uservo);
//按id查询信息
//UserVO uservo=userdao.select(23);
//System.out.println("userName---"+uservo.getName());
//查询所有信息
/* for(Object o:userdao.find()){
UserVO uservo=(UserVO) o;
System.out.println("id----"+uservo.getId()+"---name----"+uservo.getName()+"------------pwd------"+uservo.getPwd());
}*/
}
}
最后我要说的是,这个jdbc是短时间整理出来的,可能存在不足的地方,望指出。spring 的mvc我也会抽空学习发表到博客上来。