zoukankan      html  css  js  c++  java
  • Spring入门(三)

    Spring 的JDBC模板

    (一)Spring 其实提供了很多的持久化技术的模板类简化编程。
    包括:
    – JDBC
    – Hibernate3.0
    – IBatis(MyBatis)
    – JPA

    今天主要讲一下JDBC模板

    (二)实战

    1. 在mysql中创建student表

               包括id  name   age属性
      

      2.Maven依赖的引入

         所需maven依赖如下
      
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>groupId</groupId>
        <artifactId>hello</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
            <dependency>
                <groupId>commons-pool</groupId>
                <artifactId>commons-pool</artifactId>
                <version>1.6</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>
    
        </dependencies>
    </project>

    3.

    Student.java文件

    public class Student {
        private Integer age;
        private String name;
        private Integer id;
        ......
      }

    StudentMapper.java

    public class StudentMapper  implements RowMapper<Student> {
        public Student mapRow(ResultSet resultSet, int i) throws SQLException {
            Student st=new Student();
            st.setId(resultSet.getInt("Id"));
            st.setName(resultSet.getString("name"));
            st.setAge(resultSet.getInt("age"));
            return st;
        }
    }

    StudentService.java

    public interface StudentService {
        public void setDataSource(DataSource ds);
    
        public void create(String name, Integer age);
    
        public Student getStudent(Integer id);
    
        public List<Student> listStudents();
    
        public void delete(Integer id);
    
        public void update(Integer id, Integer age);
    }

    StudentJDBCTemplate.java

    public class StudentJDBCTemplate implements StudentService {
        private DataSource dataSource;
        private JdbcTemplate jdbcTemplateObject;
    
        public void setDataSource(DataSource dataSource) {
            this.dataSource = dataSource;
            this.jdbcTemplateObject = new JdbcTemplate(dataSource);
        }
    
        public void create(String name, Integer age) {
            String SQL = "insert into Student (name, age) values (?, ?)";
    
            jdbcTemplateObject.update( SQL, name, age);
            System.out.println("Created Record Name = " + name + " Age = " + age);
            return;
        }
    
        public Student getStudent(Integer id) {
            String SQL = "select * from Student where id = ?";
            Student student = jdbcTemplateObject.queryForObject(SQL,
                    new Object[]{id}, new StudentMapper());
            return student;
        }
    
        public List<Student> listStudents() {
            String SQL = "select * from Student";
            List <Student> students = jdbcTemplateObject.query(SQL,
                    new StudentMapper());
            return students;
        }
    
        public void delete(Integer id) {
            String SQL = "delete from Student where id = ?";
            jdbcTemplateObject.update(SQL, id);
            System.out.println("Deleted Record with ID = " + id );
            return;
        }
    
        public void update(Integer id, Integer age) {
            String SQL = "update Student set age = ? where id = ?";
            jdbcTemplateObject.update(SQL, age, id);
            System.out.println("Updated Record with ID = " + id );
            return;
        }
    }

    MainApp.java测试文件

    public class MainApp {
        public static void main(String[] args) {
            ApplicationContext context =
                    new ClassPathXmlApplicationContext("beans.xml");
    
            StudentJDBCTemplate studentJDBCTemplate =
                    (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
    
            System.out.println("------Records Creation--------" );
            studentJDBCTemplate.create("Zara", 11);
            studentJDBCTemplate.create("Nuha", 2);
            studentJDBCTemplate.create("Ayan", 15);
    
            System.out.println("------Listing Multiple Records--------" );
            List<Student> students = studentJDBCTemplate.listStudents();
            for (Student record : students) {
                System.out.print("ID : " + record.getId() );
                System.out.print(", Name : " + record.getName() );
                System.out.println(", Age : " + record.getAge());
            }
    
            System.out.println("----Updating Record with ID = 2 -----" );
            studentJDBCTemplate.update(2, 20);
    
            System.out.println("----Listing Record with ID = 2 -----" );
            Student student = studentJDBCTemplate.getStudent(2);
            System.out.print("ID : " + student.getId() );
            System.out.print(", Name : " + student.getName() );
            System.out.println(", Age : " + student.getAge());
    
        }
    }

    4.配置文件的编写

        提供几种方式,具体如下:
    
    <?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-4.3.xsd
    ">
    
    
        <context:component-scan base-package="com.txp.dao"/>
    
        <!--配置Spring的内接连接池-->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql:///mybatis"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </bean>
    
        <!--配置DBCP连接池-->
        <bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql:///mybatis"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </bean>
    
        <!--配置DBCP连接池-->
        <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql:///mybatis"/>
            <property name="user" value="root"/>
            <property name="password" value="root"/>
        </bean>
        <!--引入外部文件的方式:一-->
        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties"/>
        </bean>
        <!--引入外部文件的方式:二-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!--配置JDBC模板-->
        <bean id="studentJDBCTemplate" class="com.txp.dao.StudentJDBCTemplate">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    </beans> 

    jdbc.properties文件内容

    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql:///mybatis
    jdbc.username=root
    jdbc.password=root

    最后的结果
    这里写图片描述

    希望在知识中书写人生的代码
  • 相关阅读:
    【C++、回溯】LeetCode52. N皇后 II
    【C++、回溯】LeetCode39. 组合总和
    递归方法和回溯方法模板
    【C++】LeetCode面试题 08.06. 汉诺塔问题
    【C++、快速排序巧用】LeetCode215 数组中的第K个最大元素
    【multimap在文件处理中显奇效】将文本文件的每行内容,按照行首6个数字的升序,重新排序
    【C++、partition】快速排序算法实现
    【C++】归并排序实现
    【C++】LeetCode147 对链表进行插入排序
    更换与还原Android Studio的主题
  • 原文地址:https://www.cnblogs.com/tongxupeng/p/10259538.html
Copyright © 2011-2022 走看看