jdbc增删改查_Spring4基础三一-数据库篇-JDBC模板-3

上一章节《Spring4基础三十-数据库篇-JDBC模板-2》

如果文中有纰漏,请多多指正!!!

JDBC模板的使用:增删改查

一、数据准备

1.数据库定义表productinfo

/**商品信息*/create table productinfo(       id int primary key auto_increment, --主键       proName varchar(50),--商品名称       proNo  varchar(50), --商品编号             proDescription  varchar(200),--商品描述       proAmount decimal(10,2)--价格);

2.实体定义ProductInfo

/**商品信息*/public class ProductInfo {    private Integer id;//主键    private String proName;//商品名称    private String proNo;//商品编号    private String proDescription;//商品描述    private BigDecimal proAmount;//价格   }

3.接口定义DataDealDao

public interface DataDealDao {    //增、删、改    void insert(ProductInfo info);    void deleteById(int id);    void update(ProductInfo info);    //简单对象查询    String fingNameById(int id);    List fingNamesByProNo(String proNo);    //自定义对象查询    ProductInfo findById(int id);    List findAll();}

4.接口实现定义

使用JDBC模板,需要继承JdbcDaoSupport类。

//Dao实现类public class DataDealImpl  extends JdbcDaoSupport  implements DataDealDao{    //TODO}

5.配置

  • jdbc属性配置
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3366/testjdbc.username=rootjdbc.password=root
  • xml配置

二、增删改查操作

Dao实现类继承JdbcDaoSupport类后,就可以直接通过getTempLate()获取到JDBC模板对象。

JDBC模板对DB的增、删、改、查都可以通过update()方法实现,常用的两个重载方法为

public int update(String sql);public int update(String sql, Object... args); 

其中,第一个参数String sql为要执行的SQL语句;第二个参数Object... args为要执行SQL语句中所包含的动态参数;返回值int为该语句执行所影响的记录数。

1. 增,删,改演示

//新增@Overridepublic void insert(ProductInfo info) {    String insertSql = "insert into productInfo (proName,proNo,proDescription,proAmount) values(?,?,?,?)";    this.getJdbcTemplate().update(insertSql,info.getProName(),info.getProNo(),info.getProDescription(),info.getProAmount());}//删除@Overridepublic void deleteById(int id) {    String deleteSql = "delete from productInfo where id = ?";    this.getJdbcTemplate().update(deleteSql,id);}//更新@Overridepublic void update(ProductInfo info) {    String updateSql = "update productInfo set proName = ?,proNo = ?,proDescription = ?,proAmount  = ? where id = ?";    this.getJdbcTemplate().update(updateSql,info.getProName(),info.getProNo(),info.getProDescription(),info.getProAmount(),info.getId());       }

2. 查询演示

在JDBC模板中,查询结果都是以对象的形式返回的,根据返回对象类型的不同,可将查询可分为两种情况

 1.)简单对象的查询,也就是查询基本数据类型(String,Integer等); 2.)自定义对象的查询。
  • 2.1)简单对象的查询

简单对象的查询常用的有两种方法(也可以是其他重载方法),一个是查询结果为单个对象,一个是查询结果为List。

//查询结果为单对象public  T queryForObject(String sql, Class requiredType, Object... args);//查询结果为Listpublic  List queryForList(String sql, Class elementType, Object... args);

其中,第一个参数String sql为要执行的SQL语句;第二个参数Class elementType 为SQL执行结果数据的封装类型;第三个参数Object... args为要执行SQL语句中所包含的动态参数。

    • 演示
//简单对象查询@Overridepublic String fingNameById(int id) {    String fingNameByIdSQL = "select proName from ProductInfo where id = ?";    String proName = this.getJdbcTemplate().queryForObject(fingNameByIdSQL,String.class,id);    return proName;}//简单对象查询@Overridepublic List fingNamesByProNo(String proNo) {    String fingNameProNoSQL = "select proName from ProductInfo where proNo like '%"+proNo+"%'";    List namesList = this.getJdbcTemplate().queryForList(fingNameProNoSQL,String.class);    return namesList;}
  • 2.2)自定义对象的查询

自定义对象的查询常用的也有两种方法(也可以是其他重载方法),一个是查询结果为单个对象,一个是查询结果为List。

//查询结果为单对象public  T queryForObject(String sql, RowMapper rowMapper, Object... args);//查询结果为Listpublic  List query(String sql, RowMapper rowMapper, Object... args);

其中,第一个参数String sql为要执行的SQL语句;第二个参数RowMapper rowMapper 为SQL执行结果数据的记录映射接口;第三个参数Object... args为要执行SQL语句中所包含的动态参数。

RowMapper rowMapper 为SQL执行结果数据的记录映射接口,主要用于将查询结果集中的每条记录包装到指定对象中,该接口有一个方法需要实现:

//ResultSet rs:当前要处理的结果集(非总的结果集)//int rowNum:表示总的结果集中的当前行号public ProductInfo mapRow(ResultSet rs, int rowNum) ;
    • 演示

在本演示程序中使用的是匿名内部类形式,当然也可以进行自定义RowMapper 去实现RowMapper接口,然后将自定义RowMapper对象放入queryForObject()、query()方法中即可。

//自定义对象:单个对象@Overridepublic ProductInfo findById(int id) {    String findByIdSQL = "select * from ProductInfo where id = ?";    ProductInfo productInfo = this.getJdbcTemplate().queryForObject(findByIdSQL, new RowMapper(){        @Override        public ProductInfo mapRow(ResultSet rs, int rowNum) throws SQLException {            ProductInfo info = new ProductInfo();            info.setId(rs.getInt("id"));            info.setProAmount(rs.getBigDecimal("proAmount"));            info.setProName(rs.getString("proName"));            info.setProNo(rs.getString("proNo"));            info.setProDescription(rs.getString("proDescription"));            return info;        }    },id);    return productInfo;}//自定义对象:List@Overridepublic List findAll() {    String findAll = "select * from ProductInfo";    List list = this.getJdbcTemplate().query(findAll, new RowMapper(){        @Override        public ProductInfo mapRow(ResultSet rs, int rowNum) throws SQLException {            ProductInfo info = new ProductInfo();            info.setId(rs.getInt("id"));            info.setProAmount(rs.getBigDecimal("proAmount"));            info.setProName(rs.getString("proName"));            info.setProNo(rs.getString("proNo"));            info.setProDescription(rs.getString("proDescription"));            return info;        }    });    return list;}
fff7ff04c878618bc5d5a2d13d2f6b4f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【2021年,将Spring全家桶系列课程进行Review,修复顺序等错误。进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并新增高级的Spring Security等内容,通过手把手一步步教你从零开始学会应用Spring,课件将逐步进行上传,敬请期待】 本课程是Spring案例精讲课程的第五部分Spring Data,Spring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Spring Data的核心知识点:Spring Data Repository、Spring Data JPA(增删案例、实体自动生成数据库表、增加新的Repository方法、分页、排序、@NamedQuery、@Query及其分页和排序及参数设置、@NamedEntityGragh实现多对多映射、及QueryHints等)、Spring Data JDBC增删案例、@Query等)的案例介绍, 快速掌握Spring Data的核心知识,快速上手,为学习及工作做好充足的准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。 【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVC、Spring Boot、Spring Cloud及Spring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力  【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验  【本课程适用人群】如果你是一定不要错过!  适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】5. 进阶篇:SpringData 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值