文章目录
1.jdbc模板的简介
2.jdbctemplate的使用步骤以及需要的jar包
3. 使用jdbc模板操作表
JDBC模板依赖连接池获得数据库连接,所以必须先构造连接池。
// 设置数据库信息
//配置spring自带的连接池
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springtest");
dataSource.setUsername("root");
dataSource.setPassword("passwd");
//创建jdbc模板
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
3.1创建count对应的实体类。
public class Count {
private String name;
private float money;
@Override
public String toString() {
return "Count [name=" + name + ", money=" + money + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
}
3.2 添加操作
@Test
public void add() {
// 设置数据库信息
//配置spring自带的连接池
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springtest");
dataSource.setUsername("root");
dataSource.setPassword("passwd");
//创建jdbc模板
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//创建sql语句
String sql = "INSERT INTO account(name,money) VALUE(?,?)";
//使用update方法。
int rows = jdbcTemplate.update(sql, "贾航", 250);
System.out.println(rows);
}
3.3 删除操作
3.4 update操作
增删改操作都用的是jdbctemplate的update方法。
3.5 查询操作(分三种)
使用的是jdbctemplate的queryForObject( )方法
3.5.1 查询第一种:查询总共有几条记录。
@Test
public void select() {// 查询记录。
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springtest");
dataSource.setUsername("root");
dataSource.setPassword("passwd");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "select count(*) from account";
int i = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(i);
}
3.5.1 查询第二种:单个查询,返回一个对象。
@Test
public void select2() {// 查询返回对象
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springtest");
dataSource.setUsername("root");
dataSource.setPassword("passwd");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "select * from account where name=?";
// 第二个参数,数据封装
Count count=jdbcTemplate.queryForObject(sql, new Myrowmapper(), "贾航");
System.out.println(count);
}
queryforobject方法的参数中有一个RowMapper接口参数,必须实现这个类。
rowmapper接口实现类
class Myrowmapper implements RowMapper<Count> {
// 第一个结果集参数, 第二个num参数代表字段行号,也就是几个结果,基本没用。
//
public Count mapRow(ResultSet rs, int num) throws SQLException {
// TODO Auto-generated method stub
/*
* 从结果集里面拿到数据,把数据封装到对象里面去
*/
//从结果集拿数据
String name = rs.getString("name");
float money = rs.getFloat("money");
//封装数据
Count count = new Count();
count.setName(name);
count.setMoney(money);
return count;
}
}
3.5.2 查询返回list集合
queryforobject方法的参数中有一个RowMapper接口参数,必须实现这个类。
@Test
public void selectList() {//查询返回list
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springtest");
dataSource.setUsername("root");
dataSource.setPassword("passwd");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "select * from account";
List<Count> count = jdbcTemplate.query(sql,new Myrowmapper());
//上面的query方法每次执行依次rowmapper中maprow方法,执行一次返回一次。
System.out.println("-------------------");
System.out.println(count);
/*for (Count count2 : count) {
System.out.println(count2);
}*/
}