JdbcTemplate

JdbcTemplate概念

JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。

JdbcTemplate就是JDBC的封装,目的是使JDBC更加易于使用。

JdbcTemplate处理了资源的建立和释放。

          ● 它帮助我们避免一些常见的错误,比如忘了总要关闭连接。
          ● 它运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。

方法:

public JdbcTemplate(DataSource dataSource)
创建JdbcTemplate对象,方便执行SQL语句
public void execute(final String sql)
execute可以执行所有SQL语句,因为没有返回值,一般用于执行DML语句。

在JdbcTemplate中执行SQL语句的方法大致分为3类:

1. void execute(String sql):

可以执行所有SQL语句,一般用于执行DDL(数据库定义语言)语句。

2.int update(String sql, Object…args):

用于执行INSERT、UPDATE、DELETE等DML语句。
sql:表示sql语句,允许有?占位符
args:一个可变参数,表示用来替换问号占位符的实际参数

3. queryXxx:用于DQL数据查询语句。

T queryForObject(String sql, Class requiredTyoe, Object…args)
List query(String sql, RowMapper, Object…args)

JdbcTemplate使用过程

使用步骤

  1. 准备DruidDataSource连接池
  2. 导入依赖的jar包
    • spring-beans-5.0.0.RELEASE.jar
    • spring-core-5.0.0.RELEASE.jar
    • spring-jdbc-5.0.0.RELEASE.jar
    • spring-tx-5.0.0.RELEASE.jar
    • commons-logging-1.2.jar
  3. 创建JdbcTemplate对象,传入Druid连接池
  4. 调用execute、update、queryXxx等方法

案例代码

execute创建
/*
* 使用jdbcTemplate执行DDL
*
* 步骤
* 1.创建对象
* 2.调用方法执行sql语句*/
public class DemoTemplate {
public static void main(String[] args) {
//参数需要连接池对象,M那么以后jdbcT的操作sql均是从这个连接池中获取的连接
JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
String sql = “CREATE TABLE cate(” +
“cid INT PRIMARY KEY AUTO_INCREMENT,” +
“cname VARCHAR(20),” +
“details VARCHAR(10)” +
“)”;
//执行sql语句
jdbcTemplate.execute(sql);
}
}

JdbcTemplate实现增删改

public int update(final String sql, Object… args)

用于执行INSERTUPDATEDELETE等DML语句。

使用步骤

1.创建JdbcTemplate对象

2.编写SQL语句

3.使用JdbcTemplate对象的update方法进行增删改

案例代码

public class DemoTemplateIDU {
public static void main(String[] args) {
//insertMethod();
updateMethod();
//deleteMethod();
}

//删除
public static void deleteMethod(){
    JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource()) ;
    String sql = "delete from cate where cid = ?";
    jdbcTemplate.update(sql,4);
}
//修改
public static void updateMethod(){
    //创建jdbcTemplate对象
    JdbcTemplate jdbcTmeplate = new JdbcTemplate(DruidUtil.getDataSource());
    //编写sql语句
    String sql = "update cate set cname = ?, details = ? where cid = ?";
    //将可变参替换成数据 --- 更清晰
    Object[] params = {"蔬菜","新鲜的蔬菜",3};
    jdbcTmeplate.update(sql,"蔬菜","新鲜的蔬菜",3);
}

//执行添加
public static void insertMethod(){
    //创建对象
    JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
    //编写sql
    String sql = "insert into cate (cname , details) values (? , ?)";
    jdbcTemplate.update(sql,"家用电器0","和只新股");
    jdbcTemplate.update(sql,"家用电器1","和只新股");
    jdbcTemplate.update(sql,"家用电器2","和只新股");
    jdbcTemplate.update(sql,"家用电器3","和只新股");
    jdbcTemplate.update(sql,"家用电器4","和只新股");
}

}

JdbcTemplate实现查询

0.查询的结果是单个值

public T queryForObject(String sql, Class requiredType, Object… args)
执行查询语句,返回一个指定类型的数据。(得到什么就传入该类型的class文件)

使用步骤

  1. 创建JdbcTemplate对象
  2. 编写查询的SQL语句
  3. 使用JdbcTemplate对象的queryForObject方法,并传入需要返回的数据的类型
  4. 输出结果

    //单个查询
    public static void queryForObjectMethod(){
    JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
    String sql = “select cname from cate where cid = ?”;
    String s = jdbcTemplate.queryForObject(sql, String.class,2);
    System.out.println(s);
    }
    }

1 匿名内部类

public List query(String sql, RowMapper rowMapper, Object… args)

执行查询语句,返回一个List集合,List中存放的是RowMapper指定类型的数据。
* 参数sql:sql语句
* 参数rowMapper:一个接口,可以匿名内部类
* 参数args:替换?

/*
* 参数sql:sql语句
* 参数rowMapper:一个接口,可以匿名内部类
* 参数args:替换?
* */
public class DemoTemplateQuery {
public static void main(String[] args) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
String sql = “select * from cate”;
List list = jdbcTemplate.query(sql, new RowMapper() {
@Override
public Cate mapRow(ResultSet rs, int i) throws SQLException {
//rs –> 每行结果集
//i –> 第几次执行的mapRow方法
Cate cate = new Cate();
//为cate的属性赋值
cate.setCid(rs.getInt(“cid”));
cate.setCname(rs.getString(“cname”));
cate.setDetails(rs.getString(“details”));
return cate;
}
});
for (Cate cate : list) {
System.out.println(cate);
}
}
}

2.TemplateBean

2.public class BeanPropertyRowMapper implements RowMapper
BeanPropertyRowMapper类实现了RowMapper接口
query使用BeanPropertyRowMapper做映射返回对象

使用步骤

  1. 定义Product类
  2. 创建JdbcTemplate对象
  3. 编写查询的SQL语句
  4. 使用JdbcTemplate对象的query方法,并传入BeanPropertyRowMapper对象

    //查询整个表
    public static void queryMethod(){
    JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
    String sql = “select * from cate”;
    List list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Cate.class));
    for (Cate cate : list) {
    System.out.println(cate);
    }
    }
    查询总结:
    queryForObject: 对于查询结果只有一个的
    query: 查询结果多个,返回list集合(需创建数据库对象类)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值