• 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
  • 相关阅读:
    OpenCV数字图像处理基于C++:灰度变换
    体验 win10 下 oceanbase 数据库
    ChatGPT手机电脑浏览器中使用免费的ChatGPT
    Springboot整合Websocket(推送消息通知)
    MySQL in和exists 查询分析
    淘宝旺旺黑号API接口 信誉
    2021 RoboCom 世界机器人开发者大赛-高职组(复赛)
    Kotlin注解
    Kafka系列之:APIS
    笔记54:门控循环单元 GRU
  • 原文地址:https://blog.csdn.net/qq_44774198/article/details/126128970