• 4.1 声明式事务之JdbcTemplate


    4、声明式事务

    4.1、JdbcTemplate

    4.1.1、简介

    Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

    4.1.2、准备工作

    ①加入依赖
    <dependencies>
            <!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.3.1</version>
            </dependency>
            <!-- Spring 持久化层支持jar包 -->
            <!-- Spring 在执行持久化层操作、与持久化层技术进行整合过程中,需要使用orm、jdbc、tx三个
            jar包 -->
            <!-- 导入 orm 包就可以通过 Maven 的依赖传递性把其他两个也导入 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>5.3.1</version>
            </dependency>
            <!-- Spring 测试相关 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.3.1</version>
            </dependency>
            <!-- junit测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <!-- MySQL驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.29</version>
            </dependency>
            <!-- 数据源 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.31</version>
            </dependency>
        </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    ②创建jdbc.properties
    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
    jdbc.username=root
    jdbc.password=root
    
    • 1
    • 2
    • 3
    • 4
    ③配置Spring的配置文件
    <!--引入jdbc.properties-->
        <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${jdbc.driver}"></property>
            <property name="url" value="${jdbc.url}"></property>
            <property name="username" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
    
        <bean class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.1.3、测试

    ①在测试类装配 JdbcTemplate
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:spring-jdbc.xml")
    public class JDBCTemplateTest {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    @RunWith(SpringJUnit4ClassRunner.class)

    指定当前测试类在spring的测试环境中执行,
    此时可以通过注入的方式直接获取ioc容器的bean

    @ContextConfiguration(“classpath:spring-jdbc.xml”)

    设置spring测试环境的配置文件

    ②测试增删改功能

    增删改都是update:

    @Test
        public void jdbcInsert(){
            String sql = "insert into t_user values(null,?,?,?,?,?)";
            jdbcTemplate.update(sql,"root","3333",33,"女","87656@qq.com");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    ③查询一条数据为实体类对象
        @Test
        public void testGetUserById(){
    
            String sql = "select * from t_user where id = ?";
            User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), 2);
            System.out.println(user);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    ④查询多条数据为一个list集合
        @Test
        public void testGetAllUser(){
            String sql = "select * from t_user";
            List<User> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
            query.forEach(System.out::println);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    ⑤查询单行单列的值
        @Test
        public void testGetCount(){
            String sql = "select count(*) from t_user";
            Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
            System.out.println(integer);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    艾美捷ProSci丨ProSci TM4SF1 抗体解决方案
    WEB应用防火墙是什么,数据库被篡改了怎么办,数据泄漏了用什么防
    公众号留言功能怎么打开?有什么条件?
    【保姆级·创建对象】如何通过factory-method创建对象
    Java.lang.Class类 static Class<?> forName方法有什么功能呢?
    FreeSWITCH 1.10 源码阅读(1)-服务启动及 Event Socket 模块工作原理
    手动将jar加入到maven仓库
    干货!改善跨境电商客户服务的有效方法
    springcloud高频面试题
    乙酰基六肽-1——促进黑色素合成,调节皮肤色素沉着
  • 原文地址:https://blog.csdn.net/qq_44774198/article/details/126128970