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

本文详细解读了使用Spring框架中的JdbcTemplate进行数据库操作的实现过程,包括用户查询、添加、更新和删除的具体代码实现,并通过JUnit进行测试验证。重点在于展示如何在实际项目中高效地利用Spring的JdbcTemplate进行数据库交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引包的问题在此不做详述,下面是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);
    }
}


转载于:https://my.oschina.net/nyp/blog/380096

内容概要:本文深入探讨了金属氢化物(MH)储氢系统在燃料电池汽车中的应用,通过建立吸收/释放氢气的动态模型和热交换模型,结合实验测试分析了不同反应条件下的性能表现。研究表明,低温环境有利于氢气吸收,高温则促进氢气释放;提高氢气流速和降低储氢材料体积分数能提升系统效率。论文还详细介绍了换热系统结构、动态性能数学模型、吸放氢特性仿真分析、热交换系统优化设计、系统控制策略优化以及工程验证与误差分析。此外,通过三维动态建模、换热结构对比分析、系统级性能优化等手段,进一步验证了金属氢化物储氢系统的关键性能特征,并提出了具体的优化设计方案。 适用人群:从事氢能技术研发的科研人员、工程师及相关领域的研究生。 使用场景及目标:①为储氢罐热管理设计提供理论依据;②推动车载储氢技术的发展;③为金属氢化物储氢系统的工程应用提供量化依据;④优化储氢系统的操作参数和结构设计。 其他说明:该研究不仅通过建模仿真全面验证了论文实验结论,还提出了具体的操作参数优化建议,如吸氢阶段维持25-30°C,氢气流速0.012g/s;放氢阶段快速升温至70-75°C,水速18-20g/min。同时,文章还强调了安全考虑,如最高工作压力限制在5bar以下,温度传感器冗余设计等。未来的研究方向包括多尺度建模、新型换热结构和智能控制等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值