- spring框架是一站式框架 所以针对javaee三层结构每一层都有解决技术
- 在dao层使用jdbcTemplete
-
spring对不同的持久层都多了对应的封装
image - jdbcTemplete是对idbc的封装
jdbcTemplete最基本的操作 CRUD
- 导入jar包 spring-jdbc + spring-tx + 数据库驱动
- 创建对象,设置数据库的信息
- 创建jdbcTemplete对象,设置数据源
- 调用jdbcTemplete对象里面的方法实现操作
增加
public void add(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
dataSource.setUsername("root");
dataSource.setPassword("");
//创建jdbcTemplete对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//调用jdbcTemplete对象里面的方法实现操作
//创建sql语句
String sql = "insert into User values(?,?)";
int rows = jdbcTemplate.update(sql, "lily","123456");
System.out.println(rows);
}
修改
public void update(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
dataSource.setUsername("root");
dataSource.setPassword("");
//创建jdbcTemplete对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "update user set password=? where username=?";
int rows = jdbcTemplate.update(sql,"123","lily");
System.out.println(rows);
}
删除
public void delete(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
dataSource.setUsername("root");
dataSource.setPassword("");
//创建jdbcTemplete对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "delete from user where username=?";
int rows = jdbcTemplate.update(sql,"lily");
System.out.println(rows);
}
查询
jdbcTemplet实现查询,有接口RowMapper,jdbc针对这个借口没有提供实现类,得到不同的类型数据需要自己进行数据封装
jdbc实现代码
public void testJDBC(){
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
//创建连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testspring","root","");
//编写sql语句
String sql = "select * from user where username=?";
//预编译sql
psmt = conn.prepareStatement(sql);
//设置参数值
psmt.setString(1, "lily");
//执行sql
rs = psmt.executeQuery();
//遍历结果集
while(rs.next()){
//得到返回结果值
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(username+password);
//然后通过 new创建对象
}
} 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.cancel();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 使用jdbcTemplet查询返回某一个值
public void testCount(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
dataSource.setUsername("root");
dataSource.setPassword("");
//创建jdbcTemplete对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "select count(*) from user";
int count = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(count);
}
- 查询返回对象
image
参数介绍
第一个参数是sql语句
第二个参数是 RowMapper,是接口 类似于dbutils里面的接口
第三个参数是可变参数
public void testObject(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
dataSource.setUsername("root");
dataSource.setPassword("");
//创建jdbcTemplete对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "select * from user where username=?";
//需要自己写类来实现接口,自己做数据封装
User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(),"jack");
System.out.println(user);
}
MyRowMapper类 进行数据获取和封装对象
class MyRowMapper implements RowMapper<User>{
@Override
public User mapRow(ResultSet rs, int num) throws SQLException {
//num表示返回的结果条数
// TODO Auto-generated method stub
//1 从结果集里面得到数据
String username = rs.getString("username");
String password = rs.getString("password");
//2 把数据封装到对象里面
User user = new User();
user.setUsername(username);
user.setPassword(password);
return user;
}
}
- 查询返回list集合
public void testList(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
dataSource.setUsername("root");
dataSource.setPassword("");
//创建jdbcTemplete对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "select * from user";
//需要自己写类来实现接口,自己做数据封装
List<User> list = jdbcTemplate.query(sql, new MyRowMapper());
System.out.println(list);
}
网友评论