>Java >java지도 시간 >JdbcTemplate에 대한 간략한 소개

JdbcTemplate에 대한 간략한 소개

零下一度
零下一度원래의
2017-06-25 11:03:305087검색

1. JdbcTemplate 소개

JdbcTemplate은 가장 기본적인 Spring JDBC 템플릿입니다. 이 템플릿은 인덱스 매개변수를 기반으로 하는 간단한 JDBC 데이터베이스 액세스 기능과 쿼리를 지원합니다.

Spring 데이터 액세스 템플릿: 데이터베이스 작업 과정에서 트랜잭션 제어, 리소스 관리, 예외 처리 등 반복되는 작업이 많은 부분이 있습니다. Spring의 템플릿 클래스는 이러한 고정된 부분을 처리합니다. 동시에 명령문, 바인딩 매개변수 및 정렬 결과를 포함하여 애플리케이션 관련 데이터 액세스가 콜백 구현에서 처리됩니다. 이런 방식으로 우리는 우리 자신의 데이터 액세스 논리에 대해서만 걱정하면 됩니다.

JdbcTemplate에 대한 간략한 소개

Spring의 JDBC 프레임워크는 리소스 관리 및 예외 처리 작업을 담당하므로 JDBC 코드를 단순화하면 데이터베이스에서 데이터를 읽고 쓰는 데 필요한 코드만 작성하면 됩니다.

2. Spring JdbcTemplate 예제

우리의 학습 목표는 Category에서 CRUD 작업을 구현하는 데모를 작성하는 것입니다.

1 . 완성된 코드 구조는 다음과 같습니다.

3. 항목 클래스 Category
create table Category (
Id int not null,
Name varchar(80) null,constraint pk_category primary key (Id)
);INSERT INTO category(id,Name) VALUES (1,'女装');INSERT INTO category(id,Name) VALUES (2,'美妆');INSERT INTO category(id,Name) VALUES (3,'书籍');
 4를 수정하고 관련 종속성을 도입합니다.

public class Category{
    private int cateId;

    private String cateName;

    public int getCateId() {
        return cateId;
    }

    public void setCateId(int cateId) {
        this.cateId = cateId;
    }

    public String getCateName() {
        return cateName;
    }

    public void setCateName(String cateName) {
        this.cateName = cateName;
    }

    @Override
    public String toString() {
        return "id="+cateId+" name="+cateName;
    }
}

 JdbcTemplate에 대한 간략한 소개

5. applicationContext.xml 구성

jdbcTemplate의 데이터 소스로 dataSource를 구성해야 합니다. 그런 다음 CategoryDao 빈을 구성하고 jdbcTemplate 개체를 구성합니다. 완전한 applicationContext.xml은 다음과 같습니다:
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

 

6. 데이터 액세스 구현 클래스 CategoryDao
CategoryDao 생성자는 jdbcTemplate 매개변수를 포함하고 일반적인 데이터 액세스 작업을 구현합니다. 보시다시피 특정 SQL 문에만 주의하면 됩니다. 또한 getById() 및 getAll() 메서드에는 람다 구문이 사용됩니다.

<?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 ">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/store"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <bean id="categoryDao" class="CategoryDao">
        <constructor-arg ref="jdbcTemplate"></constructor-arg>
    </bean>
</beans>

 

7. 테스트
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

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

/**
 * Created by 陈敬 on 2017/6/6.
 */
public class CategoryDao {
    private JdbcTemplate jdbcTemplate;

    public CategoryDao(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public int add(Category category) {
        String sql = "INSERT INTO category(id,name)VALUES(?,?)";
        return jdbcTemplate.update(sql, category.getCateId(), category.getCateName());
    }

    public int update(Category category) {
        String sql = "UPDATE Category SET Name=? WHERE Id=?";
        return jdbcTemplate.update(sql, category.getCateName(), category.getCateId());
    }

    public int delete(int id) {
        String sql = "DELETE FROM Category WHERE Id=?";
        return jdbcTemplate.update(sql, id);
    }

    public int count(){
        String sql="SELECT COUNT(0) FROM Category";
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }

    public Category getById(int id) {
        String sql = "SELECT Id,Name FROM Category WHERE Id=?";
        return jdbcTemplate.queryForObject(sql, (ResultSet rs, int rowNumber) -> {
            Category category = new Category();
            category.setCateId(rs.getInt("Id"));
            category.setCateName(rs.getString("Name"));
            return category;
        }, id);
    }

    public List<Category> getAll(){
        String sql="SELECT Id,Name FROM Category";

        List<Category> result=jdbcTemplate.query(sql, (resultSet, i) -> {
            Category category = new Category();
            category.setCateId(resultSet.getInt("Id"));
            category.setCateName(resultSet.getString("Name"));
            return category;
        });

        return result;
    }
}

위 내용은 JdbcTemplate에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.