Maison > Java > javaDidacticiel > Une brève introduction à JdbcTemplate

Une brève introduction à JdbcTemplate

零下一度
Libérer: 2017-06-25 11:03:30
original
5072 Les gens l'ont consulté

1. À propos de JdbcTemplate

JdbcTemplate est le modèle Spring JDBC le plus basique. Ce modèle prend en charge des fonctions d'accès à la base de données JDBC simples et des requêtes basées sur des paramètres d'index.

Modèle d'accès aux données Spring : pendant le fonctionnement de la base de données, il y a une grande partie du travail répété, tel que le contrôle des transactions, la gestion des ressources, la gestion des exceptions, etc. La classe de modèle Spring gère ces parties fixes. Dans le même temps, l'accès aux données liées à l'application est géré dans l'implémentation du rappel, y compris les instructions, les paramètres de liaison et le tri des résultats. De cette façon, nous n’avons qu’à nous soucier de notre propre logique d’accès aux données.

Une brève introduction à JdbcTemplate

Le framework JDBC de Spring prend en charge le travail de gestion des ressources et de gestion des exceptions, simplifiant ainsi le code JDBC. Il suffit d'écrire le code nécessaire pour lire et écrire les données du. base de données et tout ira bien.

2. Instance Spring JdbcTemplate

Notre objectif d'apprentissage est d'écrire une démo pour implémenter des opérations CRUD sur la catégorie.

1. Créez une table

mysql pour créer un nouveau magasin de base de données, puis exécutez le SQL suivant :

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,'书籍');
Copier après la connexion
db_store.sql

2. L'IDE que j'utilise est IdeaIU, je construis le projet via maven et configure Spring via XML. La structure du code terminée est :

Une brève introduction à JdbcTemplate

3. Créez la classe d'entité Catégorie

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;
    }
}
Copier après la connexion

 

4. .Modifiez pom.xml et introduisez les dépendances pertinentes.

    <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>
Copier après la connexion

 

5. Configurez applicationContext.xml

Vous devez configurer dataSource comme source de données de jdbcTemplate. Configurez ensuite le bean CategoryDao et construisez l'objet jdbcTemplate. Le applicationContext.xml complet est le suivant :

<?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>
Copier après la connexion

 

6. La classe d'implémentation d'accès aux données CategoryDao

Le constructeur CategoryDao contient le paramètre jdbcTemplate , puis implémenté des opérations communes d'accès aux données. Comme vous pouvez le voir, nous devons uniquement prêter attention à l'instruction SQL spécifique. De plus, la syntaxe lambda est utilisée dans les méthodes getById() et getAll().

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;
    }
}
Copier après la connexion

 

7. Test

@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class testCategoryDao {
    @Autowired
    private CategoryDao categoryDao;

    @Test
    public void testAdd() {
        Category category = new Category();
        category.setCateId(4);
        category.setCateName("母婴");

        int result = categoryDao.add(category);
        System.out.println(result);
    }

    @Test
    public void testUpdate() {
        Category category = new Category();
        category.setCateId(4);
        category.setCateName("男装");

        int result = categoryDao.update(category);
        System.out.println(result);
    }


    @Test
    public void testGetById() {
        int id = 4;
        Category category = categoryDao.getById(id);
        System.out.println(category.toString());
    }

    @Test
    public void testGetAll() {
        List<Category> categories = categoryDao.getAll();
        for (Category item : categories) {
            System.out.println(item);
        }
    }

    @Test
    public void testCount() {
        int count = categoryDao.count();
        System.out.println(count);
    }

    @Test
    public void testDelete() {
        int id = 4;
        int result = categoryDao.delete(id);
        System.out.println(result);
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal