SpringData入門筆記(二) - SpringJdbc template

目標

有一個學生表,屬性有id/name/age,id自增,經過spring-jdbc的方式查詢全部數據,添加數據。java

項目結構

輸入圖片說明

Maven依賴

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.4.RELEASE</version>
    </dependency>

代碼編寫

創建對象模型

Student.javamysql

package com.dotleo.entity;

/**
 * Student 實體類
 * @author LiuFei
 * @create 2017-11-05 21:35
 */

public class Student {

    private int id; //主鍵

    private String name; //姓名

    private int age; //年齡

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

spring配置文件 - beans.xml 建立

此文件爲最終版,可能因爲部分類還沒建立報錯,暫時不用管spring

beans.xmlsql

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns="http://www.springframework.org/schema/beans"
       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">

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/spring_data" />
        <property name="username" value="root" />
        <property name="password" value="liufei" />
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="studentDAO" class="com.dotleo.dao.StudentDAOImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate" />
    </bean>
</beans>

DAO開發

StudentDAO.java測試

package com.dotleo.dao;

import com.dotleo.entity.Student;

import java.util.List;

/**
 * 學生類DAO
 * @author LiuFei
 * @create 2017-11-05 21:38
 */

public interface StudentDAO {

    /**
     * 查詢全部學生
     * @return 全部學生
     */
    public List<Student> query();

    /**
     * 添加一個學生
     * @param student 學生
     */
    public int save(Student student);
}

StudentDAOImpl.javathis

package com.dotleo.dao;

import com.dotleo.entity.Student;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Student類DAO實現類,經過最原始的jdbc方式操做
 * @author LiuFei
 * @create 2017-11-05 21:41
 */

public class StudentDAOImpl implements StudentDAO{

    private JdbcTemplate jdbcTemplate;

    public List<Student> query() {

        final List<Student> students = new ArrayList<Student>();

        String sql = "select id, name , age from student";

        jdbcTemplate.query(sql, new RowCallbackHandler() {
            public void processRow(ResultSet resultSet) throws SQLException {
                    Student student = new Student();
                    student.setId(resultSet.getInt("id"));
                    student.setName(resultSet.getString("name"));
                    student.setAge(resultSet.getInt("age"));
                    students.add(student);
            }
        });

        return students;
    }

    public int save(Student student) {

        int result = 0;

        String sql = "insert into student (name, age) values (?, ?)";

        result = jdbcTemplate.update(sql, student.getName(), student.getAge());

        return result;
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
}

測試類建立

須要必定有junit基礎url

DataSourceTest.javacode

package com.dotleo;

import com.dotleo.dao.StudentDAO;
import com.dotleo.entity.Student;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.util.List;

/**
 * @author LiuFei
 * @create 2017-11-05 22:51
 */

public class DataSourceTest {

    ApplicationContext ctx = null;

    @Before
    public void setup() {
        ctx = new ClassPathXmlApplicationContext("beans.xml");
    }

    @After
    public void tearDown() {
        ctx = null;
    }

    @Test
    public void testDataSource() {
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        Assert.assertNotNull(dataSource);
    }

    @Test
    public void testJdbcTemplate() {
        JdbcTemplate jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
        Assert.assertNotNull(jdbcTemplate);
    }

    @Test
    /**
     * 查詢方法測試
     */
    public void testQuery() {
        StudentDAO studentDAO = (StudentDAO) ctx.getBean("studentDAO");
        List<Student> studentList = studentDAO.query();
        for (Student student : studentList
                ) {
            System.out.println("id: " + student.getId()
                    + "name: " + student.getName()
                    + "age: " + student.getAge());
        }
    }

    @Test
    /**
     * 添加方法測試
     */
    public void testSave() {
        StudentDAO studentDAO = (StudentDAO) ctx.getBean("studentDAO");
        Student student = new Student();
        student.setName("maliu");
        student.setAge(23);
        int result = studentDAO.save(student);
        System.out.println(result);
    }
}
相關文章
相關標籤/搜索