zoukankan      html  css  js  c++  java
  • jdbcTemplate之jdbc模板技术

    1:为什么要使用jdbcTemplate?

    在实际开发中使用jdbc技术太过复杂,为了减少代码冗余,操作简单

    步骤一:创建实体类

    package beans;
    
    public class Book {
    @Override
        public String toString() {
            return "Book [bid=" + bookid + ", bname=" + bname + ", bprice=" + bprice
                    + "]";
        }
    private int bookid;
    private String bname;
    private int bprice;
    public int getBid() {
        return bookid;
    }
    public String getBname() {
        return bname;
    }
    public int getBprice() {
        return bprice;
    }
    public void setBid(int bid) {
        this.bookid = bid;
    }
    public void setBname(String bname) {
        this.bname = bname;
    }
    public void setBprice(int bprice) {
        this.bprice = bprice;
    }
    
    }

    步骤二:创建接口以及实现类

    package dao;
    
    import java.util.List;
    
    import beans.Book;
    
    public interface IBook {
       public int addbook(Book book);
       public List<Book> getall();
    }
    package dao.impl;
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.jdbc.core.support.JdbcDaoSupport;
    
    import util.MyRowMapped;
    import beans.Book;
    import dao.IBook;
    
    public class IBookimpl extends JdbcDaoSupport implements IBook {
    
        @Override
        public int addbook(Book book) {
            String sql="insert into book(bid,bname,bprice) values(?,?,?)";
            int update = this.getJdbcTemplate().update(sql,book.getBid(),book.getBname(),book.getBprice());
            return update;
        }
    
        @Override
        public List<Book> getall() {
            String sql="select * from book";
            List<Book> query = this.getJdbcTemplate().query(sql,new MyRowMapped());
            return query;
        }
    
    }

    *如果要使用查询功能,需要调用jdbcTemplate的query方法,query方法的重载方法需要RowMapped类型的参数,不过RowMapped是接口类型。

    所以要自己手动创建一个RowMapped接口的实现类。并重写其方法~!

    package util;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.springframework.jdbc.core.RowMapper;
    
    import beans.Book;
    
    public class MyRowMapped implements RowMapper<Book>{
    
        //rs:單條記錄
        @Override
        public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
            Book book=new Book();
            book.setBid(rs.getInt("bid"));
            book.setBname(rs.getString("bname"));
            book.setBprice(rs.getInt("bprice"));
            return book;
        }
    }

    这里的resultSet对象代表单条记录,rowNum代表第几行的数据。所以不需要使用while循环来迭代。

    步骤三:数据源的配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:aop="http://www.springframework.org/schema/aop"
            xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            ">
            <bean id="bookDao" class="dao.impl.IBookimpl">
            <property name="dataSource" ref="DataSource"></property>
            </bean>
            <bean id="serviceDao" class="service.impl.IBookServiceimpl">
            <property name="dao" ref="bookDao"></property>
            </bean>
            <!-- 配置數據源 -->
            <!-- 1.spring內置 -->
            <!-- <bean id="DataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
            <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
            <property name="username" value="Y2162"></property>
            <property name="password" value="1"></property>
            </bean> -->
            <!-- dbcp方式配置  需要导入dbcp的包和pool的包 --> 
            <!-- <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
            <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
            <property name="username" value="Y2162"></property>
            <property name="password" value="1"></property>
            </bean> -->
            <!-- c3p0方式配置 需要导入c3p0的包 -->
            <bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${driverClass}"></property>
            <property name="jdbcUrl" value="${jdbcUrl}"></property>
            <property name="user" value="${user}"></property>
            <property name="password" value="${password}"></property>
            </bean>
            <!-- 註冊jdbc屬性 -->
            <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties"></property>
            </bean>
            
            <context:property-placeholder location="classpath:jdbc.properties"/>
            <!-- 註冊jdbctemplate -->
            <bean id="myTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="DataSource"></property>
            </bean>
    </beans>

    步骤四:测试类代码

    package test;
    
    import java.util.List;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import service.IBookService;
    import beans.Book;
    
    public class MyTest {
        public static void main(String[] args) {
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            /*IBookService bean = (IBookService)ctx.getBean("serviceDao");
            Book book=new Book();
            book.setBid(3);
            book.setBname("深入spring");
            book.setBprice(100);
            System.out.println(bean.addbook(book));*/
            IBookService bean = (IBookService)ctx.getBean("serviceDao");
            List<Book> getall = bean.getall();
            for (Book book : getall) {
                System.out.println(book);
            }
        }
    }
  • 相关阅读:
    Qt 学习之路:元素布局
    Qt 学习之路 2(80):定位器
    Qt 学习之路 2(79):QML 组件
    Qt 学习之路:QML 组件
    Qt 学习之路:QML 基本元素
    qt 学习之路 :QML 语法
    Qt 学习之路:QML 和 QtQuick 2
    Qt 学习之路:线程总结
    Qt 学习之路:线程和 QObject
    五步教你实现使用Nginx+uWSGI+Django方法部署Django程序
  • 原文地址:https://www.cnblogs.com/chimingyang/p/6023332.html
Copyright © 2011-2022 走看看