首页 > 其他分享 >Spring-jdbc

Spring-jdbc

时间:2024-01-16 22:36:27浏览次数:30  
标签:jdbc String Spring emp sql import jdbcTemplate

1 引入相关依赖

<dependencies>
        <!--spring jdbc  Spring 持久化层支持jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.0.2</version>
        </dependency>
        <!-- MySQL驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!-- 数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.15</version>
        </dependency>
    </dependencies>

配置文件

jdbc.user=root
jdbc.password=zhbx2020
jdbc.url=jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&useSSL=false
jdbc.driver=com.mysql.cj.jdbc.Driver

bean.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">

       
    <!--数据源对象-->
    <!--引入外部属性文件,创建数据源对象-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
         <property name="url" value="${jdbc.url}"></property>
         <property name="driverClassName" value="${jdbc.driver}"></property>
         <property name="username" value="${jdbc.user}"></property>
         <property name="password" value="${jdbc.password}"></property>
     </bean>

    <!--JdbcTemplate对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="druidDataSource"></property>
    </bean>

    <!--事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="druidDataSource"></property>
    </bean>

    <!--配置事务增强-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="update*" read-only="false" propagation="REQUIRED"></tx:method>
            <tx:method name="buy*" read-only="false" propagation="REQUIRED"></tx:method>
        </tx:attributes>
    </tx:advice>

    <!--配置切入点和通知使用的方法-->
    <aop:config>
        <aop:pointcut id="pt" expression="execution(* com.atguigu.spring6.xmltx.service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"></aop:advisor>
    </aop:config>
 </beans>

测试类

package com.atguigu.spring6.jdbc;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

import java.net.URL;
import java.sql.ResultSet;
import java.util.List;

@SpringJUnitConfig(locations = "classpath:beans-xml.xml")
public class JdbcTemplateTest {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    //查询:返回对象
    @Test
    public void testSelectObject() {
        //写法一
            String sql = "select * from t_emp where id=?";
            Emp empResult = jdbcTemplate.queryForObject(sql,
                    (rs, rowNum) -> {
                        Emp emp = new Emp();
                        emp.setId(rs.getInt("id"));
                        emp.setName(rs.getString("name"));
                        emp.setAge(rs.getInt("age"));
                        emp.setSex(rs.getString("sex"));
                        return emp;
                    }, 1);
            System.out.println(empResult);

        //写法二
        String sql2 = "select * from t_emp where id=?";
        Emp emp2 = jdbcTemplate.queryForObject(sql,
                      new BeanPropertyRowMapper<>(Emp.class),1);
        System.out.println(emp2);
    }

    //查询:返回list集合
    @Test
    public void testSelectList() {
            String sql = "select * from t_emp";
        List<Emp> list = jdbcTemplate.query(sql,
                new BeanPropertyRowMapper<>(Emp.class));
        System.out.println(list);
    }

    //查询:返回单个值
    @Test
    public void testSelectValue() {
        String sql = "select count(*) from t_emp";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(count);
    }

    //添加  修改  删除操作
    @Test
    public void testUpdate() {

       /* 1 添加操作*/
        //第一步 编写sql语句
        String sql = "INSERT INTO t_emp VALUES(NULL,?,?,?)";
        //第二步 调用jdbcTemplate的方法,传入相关参数
        Object[] params = {"东方不败", 20, "未知"};
        int rows = jdbcTemplate.update(sql,params);
        int rows2 = jdbcTemplate.update(sql,"林平之", 20, "未知");


        //2 修改操作
        String sql2 = "update t_emp set name=? where id=?";
        int rows3 = jdbcTemplate.update(sql2,"林平之atguigu",3);
        System.out.println(rows3);


        //3 删除操作
        String sql4 = "delete from t_emp where id=?";
        int rows4 = jdbcTemplate.update(sql, 3);
        System.out.println(rows);
    }
}

 

标签:jdbc,String,Spring,emp,sql,import,jdbcTemplate
From: https://www.cnblogs.com/zhbx/p/17968692

相关文章

  • springcache condition #result 条件不生效问题排查
    本文主要是日常开发过程当中遇到的一个实际问题,以及问题排查的过程你将了解:springcache注解中condition的作用原理condition以及unless条件判断的区别背景有一个用户权限查询接口,查询用户在某个应用的权限,关键的两个入参信息为appCode(应用编码)account(用户账号)......
  • 掌握Spring缓存-全面指南与最佳实践
    第1章:引言大家好,我是小黑,咱们今天来聊聊缓存,在Java和Spring里,缓存可是个大角色。咱们在网上购物,每次查看商品详情时,如果服务器都要去数据库里翻箱倒柜,那速度得慢成什么样?这就是缓存发光发热的时刻。缓存就像是服务器的“小抽屉”,把经常用到的数据放在里面,下次需要的时候,直接从“......
  • Springboot3+Vue3在进行WebSocket通讯时出现No mapping for GET或者是404
    参考:在SpringBoot中整合、使用WebSocket-spring中文网(springdoc.cn)===============================原代码(此时前端访问后端,后端会出现:NomappingforGET/wspath)前端相关代码:letsocket:WebSocket|null=nullconstsocketURL=`ws://127.0.0.1:8084/w......
  • Spring Boot 整合工厂设计模式完成服务调用的一种实现
    工厂模式是一种创建型设计模式,其主要目的是提供一个创建对象的接口,但将具体类的实例化延迟到子类中。这样,客户端代码就不需要知道要实例化的具体类,只需要知道使用的工厂接口。项目结构如下代码实例如下所有水果都要实现这个接口publicinterfaceAllFruits{voideatFru......
  • Spring事务传播机制解析
    确保数据一致性的关键在Java的Spring框架中,事务管理是保证应用数据一致性和可靠性的关键。Spring提供了灵活的事务传播机制,它定义了事务边界,以及在嵌套方法调用时如何处理事务。本文旨在深入探讨Spring的事务传播行为,帮助开发者更好地理解和运用这一重要特性。事务传播机制简介......
  • 实现手机/PC端滑块验证(VUE+Springboot)
    思路a,通过后端,获取到图片,这个图片自己定义,随便是撒。b,通过代码把图片进行随机抠图,扣出一块,形成第二个图,该小图就是为了合并到原有的窟窿中。c,然后把两个图传到后端,保存抠出的图需要移动的距离到redis,作为验证值。d,前端根据图的位置展示底图与小图e,进行移动,完成后进行验证。......
  • Spring IoC 原理剖析
    目录IoC容器系列的设计与实现:BeanFactory和ApplicationContextIOC容器接口设计图BeanFactory容器设计原理编程式使用IOC容器ApplicationContext设计原理AbstractRefreshableApplicationContextIoC容器的初始化创建Bean容器前的准备工作创建Bean容器,加载并注册Bean刷新Bean......
  • springBoot通过AOP(面向切面编程)实现自动保存请求日志
    1.定义注解importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target(ElementType.METHOD)//指定该注解只能应用于方法上@Retention(RetentionPolicy.......
  • Elastic实战:彻底解决spring-data-elasticsearch日期、时间类型数据读取报错问题
    0.引言在使用spring-data-elasticsearch读取es中时间类型的数据时出现了日期转换报错,不少初学者会在这里困惑很久,所以今天我们专门来解读该问题的几种解决方案。1.问题分析该问题的报错形式一般是:Failedtoconvertfromtype[java.lang.String]totype[java.util.Date]f......
  • Spring Boot3.x集成ElasticSearch8.x
    SpringBoot3.x集成ElasticSearch8.x版本说明,本demo使用SpringBoot3.2.1+JDK17+ElasticSearch8.11.3前提是已经部署好了自己的ElasticSearch环境,我这里直接用容器默认部署好了,能访问即可创建SpringBoot项目导入pom依赖<dependency><grou......