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