美文网首页
springjdbc入门经典教程

springjdbc入门经典教程

作者: 不知不怪 | 来源:发表于2019-12-24 00:05 被阅读0次

本人使用springjdbc10年以上,如果稍微封装一下,在项目使用即方便又灵活。
具体参考springboot+springjdbc项目实战
下面就给出springjdbc经常使用实例,供大家参考。

1.pom.xml

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bjpowernode</groupId>
    <artifactId>05-springjdbc</artifactId>
    <packaging>jar</packaging>
    <version>1.0</version>
    <name>05-springjdbc</name>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
            </plugin>
        </plugins>
    </build>
    <properties>
        <spring.version>5.2.2.RELEASE</spring.version>
        <logback.version>1.2.3</logback.version>
        <slf4j.version>1.7.25</slf4j.version>
    </properties>
</project>

2.jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.user=root
jdbc.password=root

3.logback-test.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d[%p]%t[%C:%L]:%m%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
    <logger name="org.springframework.test.context.support" level="error" />
    <logger name="com.zaxxer.hikari.HikariDataSource" level="error" />
</configuration>

4.SpringConfig.java

package com.gzz.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;

import com.zaxxer.hikari.HikariDataSource;

@Configuration
@ComponentScan("com.gzz")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
    @Bean
    public DataSource getDataSource(Environment env) {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driver"));
        dataSource.setJdbcUrl(env.getProperty("jdbc.url"));
        dataSource.setUsername(env.getProperty("jdbc.user"));
        dataSource.setPassword(env.getProperty("jdbc.password"));
        return dataSource;
    }

    @Bean
    public JdbcTemplate getJdbcTemplate(@Autowired DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}

5.User.java

package com.gzz.sys;

public class User {

    private Integer id;

    private Integer age;

    private String name;

    public Integer getId() {
        return id;
    }

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

    public Integer getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "User [id=" + id + ", age=" + age + ", name=" + name + "]";
    }

}

7.TestJdbc.java

package com.gzz;

import java.util.List;
import java.util.Map;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.gzz.config.SpringConfig;
import com.gzz.sys.User;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class TestJdbc {
    private Logger log = LoggerFactory.getLogger(getClass());
    @Autowired
    private JdbcTemplate jdbcTemplate;// 注入jdbc模板

    // 返回单行单列(字符串型)
    // 使用聚合函数
    @Test
    public void run9() {
        int id = -1;
        Object[] obj = new Object[] { id };
        String sql = "select max(name) from user where id>?";
        String name = jdbcTemplate.queryForObject(sql, obj, String.class);
        log.info("name={}", name);
    }

    // 返回单行单列(数据型)
    // 使用聚合函数
    @Test
    public void run8() {
        int id = -1;
        Object[] obj = new Object[] { id };
        String sql = "select count(*) from user where id>?";
        Integer count = jdbcTemplate.queryForObject(sql, obj, Integer.class);
        log.info("count={}", count);
    }

    // 返回单行记录弱类型
    // 返回记录个数必须为一条
    @Test
    public void run7() {
        int id = 1;
        Object[] obj = new Object[] { id };
        String sql = "select id,name,age from user where id=?";
        Map<String, Object> map = jdbcTemplate.queryForMap(sql, obj);
        log.info("map={}", map);
    }

    // 有参数并且弱类型<Map<String, Object>>
    // 适用于各种场景
    @Test
    public void run6() {
        int id = -1;
        Object[] obj = new Object[] { id };
        String sql = "select id,name,age from user where id>?";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, obj);
        log.info("list={}", list);
    }

    // 返回单个对象的查询
    // 返回记录个数必须为一条
    @Test
    public void run5() {
        int id = 1;
        Object[] obj = new Object[] { id };
        String sql = "select id,name,age from user where id=?";
        User user = jdbcTemplate.queryForObject(sql, obj, new BeanPropertyRowMapper<User>(User.class));
        log.info("user={}", user);
    }

    // 有参数并且指定反回记录类型
    @Test
    public void run4() {
        int id = -1;
        Object[] obj = new Object[] { id };
        String sql = "select id,name,age from user where id=?";
        // BeanPropertyRowMapper//bean属性行映射:把一行记录转成实体类对象
        List<User> list = jdbcTemplate.query(sql, obj, new BeanPropertyRowMapper<User>(User.class));
        for (User user : list) {
            log.info("user={}", user);
        }
    }

    // insert update delete用同模板中的同一个方法
    // 有参数delete语句
    @Test
    public void run3() {
        int id = 23;
        Object[] obj = new Object[] { id };
        String sql = "delete from user where id=?";
        int count = jdbcTemplate.update(sql, obj);
        log.info("count={}", count);
    }

    // 有参数update语句
    @Test
    public void run2() {
        User user = new User();
        user.setAge(10);
        user.setName("王五光");
        user.setId(2);
        Object[] obj = new Object[] { user.getName(), user.getAge(), user.getId() };
        String sql = "update user set name=?,age=? where id=?";
        int count = jdbcTemplate.update(sql, obj);
        log.info("count={}", count);
    }

    // 有参数insert语句
    @Test
    public void run1() {
        User user = new User();
        user.setAge(10);
        user.setName("王五");
        Object[] obj = new Object[] { user.getAge(), user.getName() };
        String sql = "insert into user (age,name) values(?,?)";
        int count = jdbcTemplate.update(sql, obj);
        log.info("count={}", count);
    }

    // 没有参数insert语句
    @Test
    public void run() {
        int count = jdbcTemplate.update("insert into user (age,name) values(20,'李四光')");
        log.info("count={}", count);
    }

}

相关文章

网友评论

      本文标题:springjdbc入门经典教程

      本文链接:https://www.haomeiwen.com/subject/aarznctx.html