Spring入门第3天--JDBC Template开发入门

41 篇文章 1 订阅
12 篇文章 1 订阅
文档版本开发工具测试平台工程名字日期作者备注
V1.02016.06.23lutianfeinone

Spring JdbcTemplate

  • JdbcTemplate模板与DbUtils工具类比较类似

Spring对持久层技术支持

  • JDBC : org.springframework.jdbc.core.JdbcTemplate
  • Hibernate3.0 : org.springframework.orm.hibernate3.HibernateTemplate
  • MyBatis : org.springframework.orm.ibatis.SqlMapClientTemplate
  • JPA : org.springframework.orm.jpa.JpaTemplate


开发JDBCTemplate入门

  • 第一步:引入相应jar包:

    • spring-tx-3.2.0.RELEASE.jar
    • spring-jdbc-3.2.0.RELEASE.jar
    • mysql驱动.
  • 第二步:创建applicationContext.xml

  • 第三步:编写一个测试类
    @Autowired
    @Qualifier("jdbcTemplate")
    private JdbcTemplate jdbcTemplate;

    @Test
    public void demo2(){
        jdbcTemplate.execute("create table user (id int primary key auto_increment,name varchar(20))");
    }


配置连接池

  • 在实际开发中,通过Spring配置文件来配置JdbcTemplate
  • 常用数据源
    • Spring 数据源实现类 DriverManagerDataSource
    • DBCP 数据源 BasicDataSource
    • C3P0 数据源 ComboPooledDataSource
Spring默认的连接池
<!-- 配置Spring默认的连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql:///spring3_day02"/>
    <property name="username" value="root"/>
    <property name="password" value="123"/>
</bean>


DBCP连接池
  • 导入jar包:
    • com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
    • com.springsource.org.apache.commons.pool-1.5.3.jar
<!-- 配置DBCP连接池 -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql:///spring3_day02"/>
    <property name="username" value="root"/>
    <property name="password" value="123"/>

</bean>


C3P0连接池
  • 导入jar包:
    • com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
<!-- 配置c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql:///spring3_day02"/>
    <property name="user" value="root"/>
    <property name="password" value="123"/>
</bean>

使用properties文件配置数据库连接基本参数

  • 在src下创建jdbc.properties
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql:///spring3_day02
jdbc.user = root
jdbc.password = 123
  • 在applicationContext.xml 中使用属性文件配置的内容
  • 第一种写法:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
          <property name="location" value="classpath:jdbc.properties"></property>
</bean>
  • 第二种写法: 先引入Context标签头
<context:property-placeholder location="classpath:jdbc.properties"/>


JdbcTemplate的CRUD的操作

  • 为了方便DAO中注入JdbcTemplate,Spring为每一个持久化技术都提供了支持类
  • JDBC : org.springframework.jdbc.core.support.JdbcDaoSupport
  • Hibernate 3.0 : org.springframework.orm.hibernate3.support.HibernateDaoSupport
  • MyBatis : org.springframework.orm.ibatis.support.SqlMapClientDaoSupport
基本增删改操作
  • 插入操作
    • String sql = “insert into customers values(null,?)”;
    • jdbcTemplate.update(sql, “小丽”);
  • 修改操作
    • String sql = “update customers set name= ? where id =?”;
    • jdbcTemplate.update(sql, “小明”, 1);
  • 删除操作
    • String sql = “delete from customers where id =?”;
    • jdbcTemplate.update(sql, 1);
查询操作
  • 简单查询:

    • 例一 : queryForInt 查询int类型
      • String sql = “select count(*) from customers”;
      • int count = jdbcTemplate.queryForInt(sql);
    • 例二 : queryForObject 查询对象类型
      • String sql = “select name from customers where id = ?”;
      • String name = jdbcTemplate.queryForObject(sql, String.class, 2);
      • 这里String.class是返回类型 , 2是customer的id参数
  • 复杂查询:(返回对象,和对象集合)

    • 查询单个对象 : queryForObjectString sql,RowMapper<T> rowMapper,Object... args);

    • 查询多个对象的集合:query(String sql,RowMapper<T> rowMapper,Object... args);

  • eg:使用匿名内部类来处理的方式:

public User findById(int id){
        String sql = "select * from user where id = ?";
        User user = this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);
        return user;
    }

    public List<User> findAll(){
        String sql = "select * from user";
        return this.getJdbcTemplate().query(sql, new UserRowMapper());
    }

    class UserRowMapper implements RowMapper<User>{
        /**
         * rs:结果集.
         * rowNum:行号
         */
        public User mapRow(ResultSet rs, int rowNum) throws SQLException {
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            return user;
        }


  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值