zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    通用Logging框架设计
    slf4j 与各个 logging框架的适配器说明
    优雅的使用Spring
    Python : 反射
    Python: Tools
    Python : Class
    Python : Module
    Python 入门:基本语法
    docker:版本变更
    Linux: yum配置说明
  • 原文地址:https://www.cnblogs.com/1234AAA/p/8567042.html
Copyright © 2011-2022 走看看