文档章节

Spring学习总结4——使用SpringJDBC访问数据库

yope
 yope
发布于 2015/02/26 13:08
字数 649
阅读 128
收藏 1

引包的问题在此不做详述,下面是viewspace-dao.xml中的关键配置

<!-- 扫描com.sunsharing.dao包下所有标注@Repository的DAO组件 -->
<context:component-scan base-package="com.sunsharing.springdemo.dao"/>
<!--使用spring提供的PropertyPlaceholderConfigurer读取数据库配置信息.properties-->
<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:jdbc.properties"/>
</bean>
<!--数据源配置-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close"
    p:driverClassName="${jdbc.driverClassName}"
    p:url="${jdbc.url}"
    p:username="${jdbc.username}"
    p:password="${jdbc.password}"/>
<!--jdbcTemplate装配-->
<bean id="jdbcTemplate"
      class="org.springframework.jdbc.core.JdbcTemplate"
      p:dataSource-ref="dataSource"/>

domain层java代码

package com.sunsharing.springdemo.domain;
/**
 * Created by nyp on 2015/2/5.
 */

public class User {  
  //建立一个user对象,对应数据库中的各个属性,并给出set,get方法
    private int userId;
 
    private String userName;
  
    private String password;
 
    private String lastIp; 
   
   private String lastVisit;
    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    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;
    }

    public String getLastIp() {
        return lastIp;
    }

    public void setLastIp(String lastIp) {
        this.lastIp = lastIp;
    }

    public String getLastVisit() {
        return lastVisit;
    }
    public void setLastVisit(String lastVisit) {
        this.lastVisit = lastVisit;
    }

}

dao层java代码

package com.sunsharing.springdemo.dao;
import com.sunsharing.springdemo.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * Created by nyp on 2015/2/5.
 */
//通过Repository 注入bean
@Repository
public class UserDao  {   
    //自动注入jdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;  
   
    /**
     * 使用jdbcTemplate查询用户
     * @param userName 用户名查询条件
     * @return 用户名匹配的User对象
     */
 public User findUserByNameJdbc(final String userName){
                                            //为了使userName可以再内部类中使用,必须声明为final
     String sqlStr="SELECT * FROM T_USER where USER_NAME= ?";
     final User user = new User();
     //通过匿名内部类定义回调函数 将结果集数据中的数据抽取到User对象中
     jdbcTemplate.query(sqlStr, new Object[]{userName},
             new RowCallbackHandler() {
                 @Override
                 public void processRow(ResultSet rs) throws SQLException {
                   user.setUserName(rs.getString("USER_NAME"));
                   user.setLastVisit(rs.getString("LAST_VISIT"));
                   user.setLastIp(rs.getString("LAST_IP"));
                 }
             }
     );
  return  user;
 }
    /**
     * 使用jdbcTemplate增加用户
     * @param user 用户对象
     *
     * */
      public void addUserJdbc(User user){
          String sqlStr="INSERT INTO t_user(user_name,password,last_visit,last_ip)" +
                  "VALUES(?,?,?,?) ";
          Object[] args={user.getUserName(),user.getPassword(),user.getLastVisit(),user.getLastIp()};
          jdbcTemplate.update(sqlStr,args);
      }
    /**
     * 使用jdbcTemplate修改用户
     * @param userId 用户ID
     * @param user 用户
     * */

      public void updateUserJdbc(User user,int userId){
       String sqlStr="UPDATE t_user set user_name=?, password=?, last_visit=?, last_ip=? where user_id=?";
       Object[] args={user.getUserName(),user.getPassword(),user.getLastVisit(),user.getLastIp(),userId};
               jdbcTemplate.update(sqlStr,args);
      }
    /**
     * 使用jdbcTemplate删除用户
     * @param userId 用户ID
     *
     * */
      public void delUserJdbc(int userId){
          String sqlStr="DELETE FROM t_user WHERE user_id=?";
          jdbcTemplate.update(sqlStr,new Object[]{userId});
      }

}

junit测试SpringJDBC操作数据库代码

package com.sunsharing.springdemo.dao;
import com.sunsharing.springdemo.domain.User;
import com.sunsharing.component.utils.base.DateUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import static org.testng.Assert.*;
/**
 * Created by nyp on 2015/2/5.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:/viewspace-dao.xml"})
public class UserDaoTest{
    @Autowired
    private UserDao userDao;

  @Test
    public void addUserByJdbc(){
        User user=new User();
        user.setUserName("jdbcTest");
        user.setPassword("123456");
        user.setLastVisit(new Date().toString());
        user.setLastIp("1.1.1.1");
        userDao.addUserJdbc(user);
        assertEquals(user.getPassword(),"123456");
    } 
  @Test
    public void findUserByJdbc() {
        User user = userDao.findUserByNameJdbc("jdbcTest");
        System.out.println("username="+user.getUserName()+" lastvisit="+user.getLastVisit());
        assertNotNull(user);
        assertEquals(user.getUserName(),"jdbcTest");
    }
 
 @Test
    public void updateUserByJdbc(){
        User user=new User();
        user.setUserName("jdbcTest1");
        user.setPassword("1234561");
        user.setLastVisit(new Date().toString());
        user.setLastIp("1.1.1.12");
        userDao.updateUserJdbc(user,12);
    }
 @Test
    public  void delUserByJdbc(){
        userDao.delUserJdbc(3);
    }
}


© 著作权归作者所有

共有 人打赏支持
yope
粉丝 15
博文 40
码字总数 34264
作品 0
厦门
程序员
私信 提问
加载中

评论(2)

yope
yope

引用来自“ulyn”的评论

//自动注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;

这个要注意多数据源的情况 Autowired可能会出问题。
如果多个数据源的情况下,确实有可能出现问题, 不过可以使用如下方法,指定id注入 @Autowired @Qualifier("JdbcTemplate2")
ulyn
ulyn
//自动注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;

这个要注意多数据源的情况 Autowired可能会出问题。
Spring的事务管理难点剖析(1):DAO和事务管理的牵绊

有些人很少使用Spring而不使用Spring事务管理器的应用,因此常常有人会问:是否用了Spring,就一定要用Spring事务管理器,否则就无法进行数据的持久化操作呢?事务管理器和DAO是什么关系呢?...

icheer
2012/07/17
0
0
Spring框架笔记(二十四)——Spring中的JDBC的两种使用方式

为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法...

HappyBKs
2015/08/26
0
0
基于SpringJdbc的泛型Dao

使用的Spring是3.1版本,不是3.0版本。两者还是有区别的,其中一点就是:SimpleJdbcTemplate在3.1版本被标记为过时了,而SimpleJdbcTemplate的一些方法,被JdbcTemplate吸收了。所以,个人推荐...

moz1q1
2014/07/20
0
0
SpringJDBC可以单独使用吗?

@苗哥 你好,想跟你请教个问题: 我现在在做一个应用,需要用到数据库,我之前使用过spring和springJDBC,然后感觉springJDBC实在是太方便了 - - 但是现在感觉无法熟练驾驭Spring,所以不打算...

Timco
2014/04/24
672
9
分析总结Spring管理Hibernate中Dao层访问数据库常用方式(附SSH的jar包)

上篇博客中已经讲解Spring配置数据源的常用的几种方式。接下来本篇博客继续讲解。配置完数据源,那Dao层是如何访问数据库呢? 基于最近的项目使用SSH2框架完成,分析总结Spring与Hibernate集...

晨曦之光
2012/08/22
588
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部