首页 > 其他分享 >Spring的JdbcTemplate使用教程

Spring的JdbcTemplate使用教程

时间:2024-01-24 23:02:18浏览次数:18  
标签:教程 Dept int Spring public dept deptService JdbcTemplate id

什么是JdbcTemplate?

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

准备工作

引入jdbcTemplate的相关依赖:
image

案例实操

  1. 创建jdbc.properties文件,配置数据库信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/dbtest1?serverTimezone=UTC
jdbc.username=root
jdbc.password=123456
  1. 创建application.xml配置文件,配置相关信息
<!--开启组件扫码-->
<context:component-scan base-package="com.evan.spring5"/>

<!-- 引入外部配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!-- 配置数据源 -->
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
	<property name="driverClassName" value="${jdbc.driver}"/>
	<property name="url" value="${jdbc.url}"/>
	<property name="username" value="${jdbc.username}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>

<!-- 配置jdbc模板 -->
<bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
	<!-- 注入数据源 -->
	<property name="dataSource" ref="dataSource"/>
</bean>
  1. 创建数据表
CREATE TABLE `dept` (
  `id` int NOT NULL,
  `dept_name` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
  1. 创建实体类
public class Dept {

    private long id;
    private String deptName;

    public long getId() {
        return id;
    }

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

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "id=" + id +
                ", deptName='" + deptName + '\'' +
                '}';
    }
}
  1. 创建dao接口、dao实现类和service类,并将其加入到spring容器中
    ① DeptDao接口
public interface DeptDao {
    //添加操作
    int add(Dept dept);
    //修改操作
    int update(Dept dept);
    //删除操作
    int delete(Dept dept);
    //查询数据表总记录数
    int queryCount();
    //根据id查询信息
    Dept queryById(Integer id);
    //查询所有信息
    List<Dept> queryDeptList();
    //批量添加信息
    int batchAdd(List<Object[]> list);
    //批量修改信息
    void batchUpdate(List<Object[]> list);
    //批量删除信息
    void batchDelete(List<Object[]> list);
}

② 创建DeptDaoImpl实现类

@Repository
public class DeptDaoImpl implements DeptDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public int add(Dept dept) {
        String sql = "insert into dept(id,dept_name) values(?,?)";
        Object[] args = {dept.getId(),dept.getDeptName()};
        return jdbcTemplate.update(sql,args);
    }

    @Override
    public int update(Dept dept) {
        String sql = "update dept set dept_name=? where id=?";
        Object[] args = {dept.getDeptName(),dept.getId()};
        return jdbcTemplate.update(sql,args);
    }

    @Override
    public int delete(Dept dept) {
        String sql = "delete from dept where id=?";
        return jdbcTemplate.update(sql,dept.getId());
    }

    @Override
    public int queryCount() {
        String sql = "select count(1) from dept";
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }

    @Override
    public Dept queryById(Integer id) {
        String sql = "select * from dept where id=?";
        BeanPropertyRowMapper<Dept> dpr = new BeanPropertyRowMapper<>(Dept.class);
        return jdbcTemplate.queryForObject(sql,dpr,id);
    }

    @Override
    public List<Dept> queryDeptList() {
        String sql = "select * from dept";
        BeanPropertyRowMapper<Dept> dbp = new BeanPropertyRowMapper<>(Dept.class);
        return jdbcTemplate.query(sql,dbp);
    }

    @Override
    public int batchAdd(List<Object[]> list) {
        String sql = "insert into dept value(?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, list);
        return ints.length;
    }

    @Override
    public void batchUpdate(List<Object[]> list) {
        String sql = "update dept set dept_name=? where id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, list);
        System.out.println(Arrays.toString(ints));
    }
    
    @Override
    public void batchDelete(List<Object[]> list) {
        String sql = "delete from t_book where id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
}

③ 创建DeptService类

@Service
public class DeptService {

    @Autowired
    private DeptDao deptDao;

    public int add(Dept dept) {
        if (dept != null) {
            return deptDao.add(dept);
        }
        throw new RuntimeException("添加数据失败");
    }


    public int update(Dept dept) {
        return deptDao.update(dept);
    }


    public int delete(Dept dept) {
        return deptDao.delete(dept);
    }

    public int queryCount() {
        return deptDao.queryCount();
    }

    public Dept queryById(Integer id) {
        return deptDao.queryById(id);
    }

    public List<Dept> queryDeptList() {
        return deptDao.queryDeptList();
    }

    public int batchAdd(List<Object[]> list) {
        return deptDao.batchAdd(list);
    }

    public void batchUpdate(List<Object[]> list) {
        deptDao.batchUpdate(list);
    }
	
    public void batchDelete(List<Object[]> list) {
        deptDao.batchDelete(list);
    }
}

测试

@Test
public void test1() {
    ApplicationContext context =
        new ClassPathXmlApplicationContext("application.xml");
    DeptService deptService = context.getBean("deptService", DeptService.class);
    Dept dept = new Dept();
    dept.setId(1);
    dept.setDeptName("开发部");
    //添加操作
    //deptService.add(dept);
    //修改操作
    //deptService.update(dept);
    //删除操作
    deptService.delete(dept);
}

@Test
public void test2() {
    ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
    DeptService deptService = context.getBean("deptService", DeptService.class);
    //查询数据表总记录数
    int count = deptService.queryCount();
    System.out.println(count);
    
    //根据id查询信息
    Dept dept = deptService.queryById(1001);
    System.out.println(dept);

   // 查询所有信息
    System.out.println(Arrays.toString(deptService.queryDeptList().toArray()));
)

//批量添加数据
@Test
public void test3() {
    ApplicationContext context =
        new ClassPathXmlApplicationContext("application.xml");
    DeptService deptService = context.getBean("deptService", DeptService.class);
    List<Object[]> lists = new ArrayList<>();
    Object o1[] = {12,"B1"};
    Object o2[] = {13,"B2"};
    Object o3[] = {14,"B3"};
    lists.add(o1);
    lists.add(o2);
    lists.add(o3);
    int result = deptService.batchAdd(lists);
    System.out.println(result);
}

//批量修改
@Test
public void test3() {
    ApplicationContext context =
        new ClassPathXmlApplicationContext("application.xml");
    DeptService deptService = context.getBean("deptService", DeptService.class);
	List<Object[]> batchArgs = new ArrayList<>();
	Object[] o1 = {"java0909",1001};
	Object[] o2 = {"c++1010",1002};
	Object[] o3 = {"MySQL1111",1003};
	batchArgs.add(o1);
	batchArgs.add(o2);
	batchArgs.add(o3);
	//调用方法实现批量修改
	deptService.batchUpdate(batchArgs);
}

//批量删除
@Test
public void test3() {
    ApplicationContext context =
        new ClassPathXmlApplicationContext("application.xml");
    DeptService deptService = context.getBean("deptService", DeptService.class);
	List<Object[]> batchArgs = new ArrayList<>()
	Object[] o1 = {1001};
	Object[] o2 = {1002};
	batchArgs.add(o1);
	batchArgs.add(o2);
	//调用方法实现批量删除
	deptService.batchDelete(batchArgs);
}

标签:教程,Dept,int,Spring,public,dept,deptService,JdbcTemplate,id
From: https://www.cnblogs.com/lisong0626/p/17986053

相关文章

  • 无涯教程-Rust - 数据类型
    Rust是一种静态类型的语言,Rust中的每个值都需要指定某种数据类型,编译器也可以根据分配给它的值自动推断变量的数据类型。声明变量使用let关键字声明一个变量。fnmain(){letcompany_string="LearnFk";//字符串类型letrating_float=4.5;//浮......
  • CSCMS V4 搬家教程
     CSCMS V4搬家教程 1、后台---系统--系统维护_备份还原,备份好数据库(主要是确保万无一失)2、整站打包传到新主机。3、修改cscms/config/sys/Cs_DB.php文件的数据库名称数据库用户名数据密码。4、如果不同域名需修改cscms/config/sys/Cs_Config.php文件里面的站点......
  • 无涯教程-Rust - 环境设置
    通过rustup(一种用于管理Rust版本和相关工具的基于控制台的工具),可以轻松安装Rust。在Windows上安装让我们学习如何在Windows上安装RUST。必须强制使用C++工具安装VisualStudio2013或更高版本,才能在Windows上运行Rust程序,首先,从此处下载VisualStudioVS2013Express......
  • 无涯教程-CSS3 - 用户界面
    用户界面属性允许您将任何元素更改为几个标准用户界面元素之一。CSS3用户界面中使用的一些常用属性。Sr.No.Value&Remark1appearance用于允许用户将元素制作为用户界面元素。2box-sizing允许用户以清晰的方式将元素固定在区域上。3icon用于在区域上提供图标。......
  • 无涯教程-CSS3 - 多列布局
    CSS3可以将文本内容设计成像报纸一样的多列布局。一些最常用的多列属性,如下所示-Sr.No.Value&Remark1column-count 指定元素应该被分割的列数。2column-fill指定如何填充列3column-gap 指定列与列之间的间隙4column-rule所有column-rule-*属性的简......
  • SpringBoot开启动态定时任务并手动、自动关闭
    场景需求:在执行某个方法的两小时之后进行某个操作涉及:定时任务、哈希表需要注意:业务逻辑层是单一实例的,所以在定时任务类内操作业务逻辑层的某个属性和在业务逻辑层内操作的都是同一个。疑问:ThreadPoolTaskScheduler线程池需不需要规定线程数量?定时任务类@Componentpublicc......
  • 重写SpringCloudGateway路由查找算法,性能提升100倍!
    如果你也在做SpringCloudGateway网关开发,希望这篇文章能给你带来一些启发背景先说背景,某油项目,通过SpringCloudGateway配置了1.6万个路由规则,实际接口调用过程中,会偶现部分接口从发起请求到业务应用处理间隔了大概5秒的时间,经排查后发现是SpringCloudGateway底层在查找对应的R......
  • 【教程】如何在苹果手机上查看系统文件?
    ​引言苹果手机与安卓手机不同,无法直接访问系统文件夹。但是,如果我们想要查看苹果手机的系统文件,可以借助一些工具来实现。本文将介绍一款名为克魔助手的iOS设备管理软件,它能帮助我们轻松查看苹果手机的系统文件。 连接iPhone到电脑,打开克魔助手,用数据线将iPhone连接到电脑上......
  • spring boot @Async 使用的默认线程池
    线程池核心线程池满了进队列,队列满了创建新的线程.结论springboot从2.1开始@Async使用的是ThreadPoolTaskExecutor线程池,2.1之前使用的是SimpleAsyncTaskExecutor.ThreadPoolTaskExecutor此线程池的默认参数核心线程数:8队列容量:不限最大线程数:不限从默认配置......
  • BeautifulSoup和Cheerio库:解析QQ音频文件的完整教程
    在当今数字化的世界中,网络上充斥着各种各样的数据,而这些数据往往以各种不同的格式和结构存在。要从这些数据中获取有用的信息,我们就需要使用一些工具来解析和提取数据。BeautifulSoup和CheerioBeautifulSoup是Python中用于解析HTML和XML文档的库,而Cheerio是Node.js中类似的库。......