整理了一下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我也会抽空学习发表到博客上来。