Spring使用JdbcTemplate

 

JdbcTemplate作用?

 为了避免直接使用JDBC而带来的复杂且冗长的代码,

   Spring提供了一个强有力的模板类--JdbcTemplate来简化JDBC操作。并且,

  数据源DataSource对象与模板JdbcTemplate对象均可通过Bean的形式定义在配置文件中,充分发挥了依赖注入的威力。

案例:检索所有图书

 1.导入jar包

    1.1spring  jdbc  jar包  spring内置的配置数据源方式 

    spring-jdbc-4.2.0.RELEASE.jar

    idea maven 

      <!--spring JDBC--> 

      <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-jdbc</artifactId>

        <version>4.2.0.RELEASE</version> 

      </dependency>

  1.2 spring 事务jar

    spring-tx-4.2.0.RELEASE.jar

 注意事项:如果是引入物理jar包,必须保证依赖tx.jar也被引入。注意数据库驱动jar

2.分层

实体层开始
public class Book {
    private Integer bookid;
    private String bookname;
    private Integer bookprice;
}
Dao层
public interface IBookDAO {
    public List<Book> findAll();
}

DAO的实现  继承JdbcDaoSupport  
public class BookDAOImpl extends JdbcDaoSupport implements IBookDAO {
    public List<Book> findAll() {
         String sql="select * from book";
        List<Book> list = this.getJdbcTemplate().query(sql, new RowMapper<Book>() {
            /**
             * @param rs  读取器
             * @param index  索引  ,第几条记录
             * @return 单个对象
             */
            public Book mapRow(ResultSet rs, int index) throws SQLException {
                Book book = new Book();
                book.setBookid(rs.getInt("bookid"));
                book.setBookname(rs.getString("bookname"));
                book.setBookprice(rs.getInt("bookprice"));
                return book;
            }
        });
        return list;
    }
}
Service接口
public interface IBookService {
    public List<Book> findAll();
}
Service实现类
public class BookServiceImpl implements IBookService {
    //植入一个东西 ???
    private IBookDAO dao;
    public List<Book> findAll() {
        return dao.findAll();
    }

    public IBookDAO getDao() {
        return dao;
    }
    public void setDao(IBookDAO dao) {
        this.dao = dao;
    }
}

接下来到了最核心的部分,配置文件

<!--1.数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"></property>
    <property name="url" value="${jdbc.url}"></property>
    <property name="username" value="${jdbc.username}"></property>
    <property name="password" value="${jdbc.password}"></property>
</bean>

<!2.--配置一:  识别到jdbc.properties文件   两种方式 -->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

//配置二 识别到jdbc.properties文件 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"></property> </bean> <!--3.DAO--> <bean id="bookDAO" class="cn.happy.day21jdbctemplate.dao.BookDAOImpl"> <property name="dataSource" ref="dataSource"></property> </bean> <!--4.service id--> <bean id="bookService" class="cn.happy.day21jdbctemplate.service.BookServiceImpl"> <property name="dao" ref="bookDAO"></property> </bean>

测试类代码:

@Test
//03.jdbcTemplate
public void test03(){
    ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext21jdbctemplate.xml");
    IBookService service=(IBookService)context.getBean("bookService");
    List<Book> list = service.findAll();
    for (Book book:list) {
        System.out.println(book.getBookname());

3.其他三种配置数据源的方式

1)DBCP数据源配置

      <!--数据源配置  DBCP-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

xml配置:

<bean id="dataSources" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

2)C3P0数据源配置

      <!--数据源配置  C3P0-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

xml配置:

<bean id="dataSources" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

3)druid  阿里巴巴

        <!--druid-->
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.29</version>
        </dependency>

xml配置: 

<!--配置数据源四  druid  阿里巴巴-->
    <bean id="dataSources" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
posted @ 2018-03-14 13:34  风骚少年  阅读(131)  评论(0)    收藏  举报
AmazingCounters.com