• Spring的JDBC模板


    Spring对持久层技术支持
      JDBC : org.springframework.jdbc.core.JdbcTemplate
      Hibernate3.0 : org.springframework.orm.hibernate3.HibernateTemplate
      IBatis(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驱动.
      第二步:编写一个测试类

    @Test
    public void demo1(){
      // 创建连接池:
      DriverManagerDataSource dataSource = new DriverManagerDataSource();
      // 设置参数:
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql:///spring3_day02");
      dataSource.setUsername("root");
      dataSource.setPassword("123");
      // 使用JDBC的模板:
      JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
      jdbcTemplate.execute("create table user (id int primary key auto_increment,name varchar(20))");
    }

    配置连接池
      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>
    <!-- 定义jdbctemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
      <property name="dataSource" ref="dataSource"/>
    </bean>

        测试类

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class SpringTest1 {
      @Autowired
      @Qualifier("jdbcTemplate")
      private JdbcTemplate jdbcTemplate;
      @Test
      public void demo2(){
        jdbcTemplate.execute("create table user (id int primary key auto_increment,name varchar(20))");
      }
    }

      

      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>

    参数设置到属性文件中
      在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"/>

        案例

    <?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:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
          http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context.xsd"
    >   <!--
        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">       <property name="location" value="classpath:jdbc.properties"></property>      </bean>
      -->   <context:property-placeholder location="classpath:jdbc.properties"/>   <!-- 配置c3p0连接池 -->   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">     <property name="driverClass" value="${jdbc.driver}"/>     <property name="jdbcUrl" value="${jdbc.url}"/>     <property name="user" value="${jdbc.user}"/>     <property name="password" value="${jdbc.password}"/>   </bean>   <!-- 定义jdbctemplate -->   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">     <property name="dataSource" ref="dataSource"/>   </bean> </beans>

    JdbcTemplate的CRUD的操作
      Spring框架中提供了对持久层技术支持的类
        JDBC : org.springframework.jdbc.core.support.JdbcDaoSupport
        Hibernate 3.0 : org.springframework.orm.hibernate3.support.HibernateDaoSupport
        iBatis : org.springframework.orm.ibatis.support.SqlMapClientDaoSupport

    <?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:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
          http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context.xsd"
    >   <context:property-placeholder location="classpath:jdbc.properties"/>   <!-- 配置c3p0连接池 -->   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">     <property name="driverClass" value="${jdbc.driver}"/>     <property name="jdbcUrl" value="${jdbc.url}"/>     <property name="user" value="${jdbc.user}"/>     <property name="password" value="${jdbc.password}"/>   </bean>   <!-- 定义jdbctemplate -->   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">     <property name="dataSource" ref="dataSource"/>   </bean>   <bean id="userDao" class="cn.yzu.spring3.demo2.UserDao">     <property name="jdbcTemplate" ref="jdbcTemplate"/>   </bean> </beans>
    public class UserDao extends JdbcDaoSupport{
      public void add(User user){
        String sql = "insert into user values (null,?)";
        this.getJdbcTemplate().update(sql, user.getName());
      }
      public void update(User user){
        String sql = "update user set name = ? where id = ?";
        this.getJdbcTemplate().update(sql, user.getName(),user.getId());
      }
      public void delete(User user){
        String sql = "delete from user where id = ?";
        this.getJdbcTemplate().update(sql, user.getId());
      }
      public int findCount(){
        String sql = "select count(*) from user";
        return this.getJdbcTemplate().queryForInt(sql);
      }
      public String findNameById(int id){
        String sql = "select name from user where id = ?";
        return this.getJdbcTemplate().queryForObject(sql, String.class, id);
      }
      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;
        }
      }
    }
  • 相关阅读:
    集合-ConcurrentSkipListMap 源码解析
    集合-跳表SkipList
    集合-ConcurrentHashMap 源码解析
    >>《移动设计模式大观.pdf》
    >>《《iOS 人机界面准则》中文版.pdf》
    >《Web导航设计.pdf》
    >>《设计心理学名着-2 情感化设计 诺曼着.pdf》
    自制网页(html+css+js+jQuery)
    仿写抽屉新热榜 (html+css)
    运动员喝饮料问题
  • 原文地址:https://www.cnblogs.com/fengmingyue/p/6208113.html
Copyright © 2020-2023  润新知