当前位置: 首页 > news >正文

做百度移动端网站涟水住房和城乡建设局网站

做百度移动端网站,涟水住房和城乡建设局网站,建设项目前期收费查询网站,网店网站怎么做目录 1、简介 2、开发步骤 2.1、导入坐标 2.2、创建表和类 2.3、创建JdbcTemplate对象 2.4、执行数据库操作 3、解耦 4、增删改查 ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹…

目录

1、简介

2、开发步骤

2.1、导入坐标

2.2、创建表和类

2.3、创建JdbcTemplate对象

2.4、执行数据库操作

3、解耦

4、增删改查


 ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:JavaEE、Spring

1、简介

JdbcTemplate是Spring框架提供的一个核心类,用于简化在Java应用程序中使用JDBC(Java Database Connectivity)时的操作。JDBC是Java连接数据库的标准API,但使用纯JDBC编写数据库访问代码可能会显得繁琐和冗长。

它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。

JdbcTemplate封装了与数据库的交互细节,提供了一组简单的方法,使得数据库操作更加简洁和高效。通过JdbcTemplate,你可以执行SQL查询、更新、批处理以及存储过程调用,而无需手动处理数据库连接的打开和关闭。

JdbcTemplate的一些主要特点包括:

  1. 简化的异常处理:JdbcTemplate会自动捕获和转换JDBC异常为Spring的DataAccessException,简化了异常处理过程。
  2. 参数化查询:JdbcTemplate支持参数化查询,可以避免SQL注入等安全问题。
  3. 结果集映射:可以将查询结果映射到Java对象或基本数据类型。
  4. 批处理操作:支持批量插入和更新,提高数据库操作效率。
  5. 错误码处理:提供错误码的解析,便于处理数据库返回的错误信息。

使用JdbcTemplate可以有效地减少样板代码,让数据库操作更加简单和可维护。它是Spring框架中数据访问的重要组成部分,并被广泛应用于Java企业应用的开发中。

2、开发步骤

JdbcTemplate开发步骤:

① 导入spring-jdbc和spring-tx坐标

② 创建数据库表和实体

③ 创建JdbcTemplate对象

④ 执行数据库操作

2.1、导入坐标

导入spring-jdbc和spring-tx坐标

<!--导入spring的jdbc坐标-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.5.RELEASE</version>
</dependency>
<!--导入spring的tx坐标-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.0.5.RELEASE</version>
</dependency>

2.2、创建表和类

创建数据库表和实体

package com.xzl.domain;/*** @author 逐梦苍穹* @date 2023/8/4 16:32*/
public class Account {private String name;private double money;@Overridepublic String toString() {return "Account{" +"name='" + name + '\'' +", money=" + money +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}
}

2.3、创建JdbcTemplate对象

2.4、执行数据库操作

package com.xzl.test;import com.alibaba.druid.pool.DruidDataSource;
import com.xzl.domain.Account;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;
import java.util.List;/*** @author 逐梦苍穹* @date 2023/8/4 16:35*/
public class jdbcTemplateTest {@Testpublic void createJdbcTemplate(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");DataSource dataSource_druid = applicationContext.getBean("dataSource_druid", DataSource.class);JdbcTemplate jdbcTemplate = new JdbcTemplate();jdbcTemplate.setDataSource(dataSource_druid);List<Account> accountList = jdbcTemplate.query("select * from jdbctemplate", new BeanPropertyRowMapper<Account>(Account.class));System.out.println(accountList);}
}

3、解耦

Spring产生JdbcTemplate对象

我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中,配置如下:

这里有一个很容易犯的错误,就是name的值,有时候要出错。这里的name的值,比如name="abc",实际上Spring找的是一个setAbc方法。下面是错误写法:

原因是:

下面让Spring自动加载jdbc模板对象:

4、增删改查

全部代码如下:

package com.xzl.test;import com.xzl.domain.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
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 javax.sql.DataSource;
import java.util.List;/*** @author 逐梦苍穹* @date 2023/8/4 16:35*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class jdbcTemplateTest {@Autowired@Qualifier(value = "jdbcTemplate")private JdbcTemplate jdbcTemplate;@Testpublic void retrieve(){List<Account> accounts = jdbcTemplate.query("select * from jdbctemplate",new BeanPropertyRowMapper<Account>(Account.class));System.out.println("查询全部:");for (Account account : accounts) {System.out.println(account);}Account account = jdbcTemplate.queryForObject("select * from jdbctemplate where name=?", new BeanPropertyRowMapper<Account>(Account.class), "xzl");System.out.println("查询单个:"+account);Long aLong = jdbcTemplate.queryForObject("select count(*) from jdbctemplate", Long.class);System.out.println("聚合查询->总数:"+aLong);Long aLong1 = jdbcTemplate.queryForObject("select sum(money) from jdbctemplate", Long.class);System.out.println("聚合查询->总和:"+aLong1);}@Testpublic void update(){jdbcTemplate.update("update jdbctemplate set money = ? where name=?;",1000,"tom");}@Testpublic void delete(){jdbcTemplate.update("delete from jdbctemplate where name=?","tom");createJdbcTemplate();}@Testpublic void create(){int row = jdbcTemplate.update("insert into jdbctemplate values(?,?)", "tom", 5000);System.out.println(row);}@Testpublic void SpringCreateJdbcTemplate(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");JdbcTemplate jdbcTemplate = applicationContext.getBean("jdbcTemplate", JdbcTemplate.class);List<Account> accountList = jdbcTemplate.query("select * from jdbctemplate", new BeanPropertyRowMapper<Account>(Account.class));System.out.println(accountList);}@Testpublic void createJdbcTemplate(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");DataSource dataSource_druid = applicationContext.getBean("dataSource_druid", DataSource.class);JdbcTemplate jdbcTemplate = new JdbcTemplate();jdbcTemplate.setDataSource(dataSource_druid);List<Account> accountList = jdbcTemplate.query("select * from jdbctemplate", new BeanPropertyRowMapper<Account>(Account.class));System.out.println(accountList);}
}

http://www.yayakq.cn/news/267956/

相关文章:

  • 怎么添加网站背景音乐关键词排名点击软件首页
  • 网站建设目标个人博客dw潍坊 优化型网站建设
  • 昆明网站空间做网站要那些工具
  • 全球网站制作哪个公司网站设计最好
  • 迅雷黄冈网站推广软件网站更换服务器如何做镜像
  • 开封景区网站建设方案wap网站教程
  • 网站没有被收录做封面的网站在哪里
  • 河南建设网站公司哪家好狼人通知紧急页面自动升级
  • 响水做网站的价格wordpress自定义短码
  • 公司网站建设周期及费用淮南网络推广报价
  • 合肥网站优化软件浙江省建设培训中心的网站
  • 网站内页如何做排名在大学做网站赚钱吗
  • 网站建设一个购买链接水滴查企业查询官网
  • 网站后台如何登陆爱站网站排名查询工具
  • 南京做网站dmooo进入wordpress后台慢
  • 做瞹瞹瞹免费网站网站开发中为什么有两个控制层
  • 百度资源站长平台网页设计这个行业怎么样
  • 彩票网站如何建设百度首页精简版
  • 广州网络服装网站建设服装网站欣赏
  • 男男床做视频网站在线建设部网站继续教育
  • 南昌做网站的公司哪里好十大广告设计公司
  • 那个网站都有做莱的图片网站需求怎么做
  • 西安 域名空间网站制作海淀发布会
  • 怎么建立一个网站链接广告公司简介模板免费
  • 网站设计的指导思想佛山公司网站设计团队
  • 虫部落是谁做的网站建筑工程项目
  • 网站开发中标签栏的图标一般都在那个文件中写代码互展科技网站建设
  • 网站建设方案书doc模板电子商务网站建设与管理实验总结
  • 专门为98k做的网站seo优化分析
  • 网站建设考虑事项seo优化什么意思