jdbcTemplate实现crud操作(查询介绍)
程序员文章站
2022-06-02 16:14:44
...
05-jdbcTemplate实现crud操作(查询介绍)
查询具体实现
第一个查询返回某一个值
My my= jdbcTemplate.queryForObject(sql, new MyRowMapper());
(1)第一个参数是sql语句
(2)第二个参数 返回类型的class
public void testCount(){
// 设置数据库信息
DriverManagerDataSource dataSource=new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///news");
dataSource.setUsername("root");
dataSource.setPassword("root");
//创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
//调用JdbcTemplate对象里面的方法实现操作
//创建语句
String sql="select count(*) from my ";
//调用方法
int count= jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println("记录条数"+count);
}
jdbc查询
@Test
public void testCount(){
Connection conn=null;
PreparedStatement psmt=null;
ResultSet rs=null;
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//创建连接
conn=DriverManager.getConnection("jdbc:mysql:///news", "root", "root");
String sql="select * from my where id=?";
psmt= conn.prepareStatement(sql);
psmt.setString(1, "zhu");
rs=psmt.executeQuery();
while(rs.next()){
My my=new My();
String id= rs.getString("id");
String password= rs.getString("password");
my.setId(id);
my.setPassword(password);
System.out.println(my);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
psmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第二个 查询返回对象
My my= jdbcTemplate.queryForObject(sql, new MyRowMapper(), "zhu");
第一个参数是sql语句
第二个参数是RowMapper ,是接口,类似于dbutils里面接口
第三个参数是 可变参数
//查询功能 返回一个对象
@Test
public void testObject(){
// 设置数据库信息
DriverManagerDataSource dataSource=new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///news");
dataSource.setUsername("root");
dataSource.setPassword("root");
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
//写sql语句,根据my查询
String sql="select * from my where id=? ";
//调用jdbcTemplate的方法实现
//第二个参数是接口 RowMapper ,需要自己写类实现接口,自己做数据封装。
My my= jdbcTemplate.queryForObject(sql, new MyRowMapper(), "zhu");
System.out.println(my);
}
第三个 查询返回list集合
(1)sql 语句
//调用jdbcTemplate的方法实现
//第二个参数是接口 RowMapper ,需要自己写类实现接口,自己做数据封装。
List<My> list= jdbcTemplate.query(sql, new MyRowMapper());
(2)RowMapper接口,自己写类实现数据封装
(3)可变参数
//4 查询返回集合
@Test
public void testList(){
// 设置数据库信息
DriverManagerDataSource dataSource=new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///news");
dataSource.setUsername("root");
dataSource.setPassword("root");
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
//写sql语句,根据my查询
String sql="select * from my";
//调用jdbcTemplate的方法实现
//第二个参数是接口 RowMapper ,需要自己写类实现接口,自己做数据封装。
List<My> list= jdbcTemplate.query(sql, new MyRowMapper());
System.out.println(list);
}
MyRowMapper类
class MyRowMapper implements RowMapper<My>{
@Override
public My mapRow(ResultSet rs, int num) throws SQLException {
// TODO Auto-generated method stub
//从结果集里面把数据得到
String id=rs.getString("id");
String password=rs.getString("password");
//2 把得到数据到对象里面
My my=new My();
my.setId(id);
my.setPassword(password);
return my;
}
}
程序截图