java spring 数据库_Java-Spring JDBC初体验操作数据库

Spring JDBC

* Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发

步骤

导入jar包

创建JDBCTemplate对象,依赖于数据源DataSource

JdbcTemplate template=new JdbcTemplate(datasource);

调用JDBCTemplate的方法来完成CRUD的操作

update():执行DML语句。增删查改

queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合

注意:查询结果集长度只能为1

queryForList():查询结果将结果集封装为list集合

注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中

query():查询结果,将结果封装为JavaBean对象

query的参数:RowMapper

一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装

new BeanPropertyRowMapper(类型.class)

queryForObject():查询结果,将结果封装为对象

一般用于聚合函数

代码如下

package cn.itcast.jdbctemplate;

import cn.itcast.utils.JDBCUtils;

import org.springframework.jdbc.core.JdbcTemplate;

public class JdbcTemplateDemo1 {

public static void main(String[] args){

//导入jar包

//创建JdbcTemplate对象

JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());

//调用方法

String sql="update account set balance=2000 where id=?";

int count =template.update(sql,3);

System.out.println(count);

}

}

练习

需求

1.修改1号数据的salary为10000

2.添加一条数据

3.删除刚才添加的记录

4.查询id为1的记录,将其封装为Map集合

5.查询所有记录,将其封装为List

6.查询所有记录,将其封装为Emp对象的List集合

7.查询总记录数

代码如下

package cn.itcast.jdbctemplate;

import cn.itcast.domain.Emp;

import cn.itcast.utils.JDBCUtils;

import org.junit.jupiter.api.Test;

import org.springframework.jdbc.core.BeanPropertyRowMapper;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Date;

import java.util.List;

import java.util.Map;

public class JdbcTemplateDemo2 {

//Junit单元测试 可以让方法独立执行

// 1.修改1号数据的salary为10000

//创建JdbcTemplate对象

private JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());

@Test

public void test1(){

//导入jar包

//调用方法

String sql="update emp set sarlary=10000 where id=?";

int count =template.update(sql,1001);

System.out.println(count);

}

// 2.添加一条数据

@Test

public void test2(){

//导入jar包

//调用方法

String sql="insert into emp(id,ename,dept_id) values(?,?,?)";

int count =template.update(sql,1015,"guoj",10);

System.out.println(count);

}

// 3.删除刚才添加的记录

@Test

public void test3(){

//导入jar包

//调用方法

String sql="delete from emp where id=?";

int count =template.update(sql,1015);

System.out.println(count);

}

// 4.查询id为1005的记录,将其封装为Map集合

//查询结果集长度只能为1

@Test

public void test4(){

//导入jar包

//调用方法

String sql="select * from emp where id=?";

Map map =template.queryForMap(sql,1001);

System.out.println(map);

}

// 5.查询所有记录,将其封装为List

@Test

public void test5(){

//导入jar包

//调用方法

String sql="select * from emp where id=? or id=?";

List> list=template.queryForList(sql,1001,1002);

for (Map stringObjectMap:list){

System.out.println(stringObjectMap);

}

}

// 6.查询所有记录,将其封装为Emp对象的List集合

@Test

public void test6(){

//导入jar包

//调用方法

String sql="select * from emp ";

List list=template.query(sql, new RowMapper() {

@Override

public Emp mapRow(ResultSet resultSet, int i) throws SQLException {

int id=resultSet.getInt("id");

String ename=resultSet.getString("ename");

int job_id=resultSet.getInt("job_id");

int mgr=resultSet.getInt("mgr");

Date joindate=resultSet.getDate("joindate");

double salary=resultSet.getDouble("sarlary");

double bonus=resultSet.getDouble("bonus");

int dept_id=resultSet.getInt("dept_id");

Emp emp=new Emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id);

return emp;

}

});

for (Emp emp:list){

System.out.println(emp);

}

}

// 6.查询所有记录,将其封装为Emp对象的List集合

@Test

public void test6_2(){

//导入jar包

//调用方法

String sql="select * from emp ";

List list=template.query(sql, new BeanPropertyRowMapper(Emp.class));

for (Emp emp:list){

System.out.println(emp);

}

}

// 7.查询总记录数

@Test

public void test7(){

//导入jar包

//调用方法

String sql="SELECT COUNT(id) FROM emp";

Long total=template.queryForObject(sql,Long.class);

System.out.println(total);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值