1spring框架是一站式框架
- 针对javaee三层,每一层都有解决技术
- 在dao层,使用jdbcTemplate
- jdbcTemplate对jdbc进行封装
2准备工作:
(1)导入jar包:除了基本的Spring jar包,还需导入spring-jdbc.RELEASE.jar,spring-tx.RELEASE.jar,
mysql-connector-jar-bin.jar
(2)数据库(web17),表user
- 增加操作(相关代码)
public void add(){
//创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///web17");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//调用jdbcTemplate对象里面的方法实现操作
//创建sql语句
String sql = "insert into user values(?,?)";
int rows = jdbcTemplate.update(sql, "chen", "677926");
System.out.println(rows);
}
- 修改操作
public void update(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///web17");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//sql语句
String sql = "update USER SET password = ? WHERE username = ?";
int rows = jdbcTemplate.update(sql, "123456","lucy");
System.out.println(rows);
}
- 删除操作
public void delete(){
//设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///web17");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//写sql 语句
String sql = "delete from user where username = ?";
int rows = jdbcTemplate.update(sql, "wang");
System.out.println(rows);
}
- 查询操作
- 查询表有多少记录
public void countTest(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///web17"); dataSource.setUsername("root"); dataSource.setPassword("123456"); //创建jdbcTemplate对象 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //写sql语句 String sql = "select count(*) from user"; int count = jdbcTemplate.queryForObject(sql, Integer.class);//queryForObject的第二个参数类型是返回类型的class System.out.println(count); }
- 查询返回对象
自己写类实现接口:MyRowMapper.javapublic void testObject(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///web17"); dataSource.setUsername("root"); dataSource.setPassword("123456"); //创建jdbcTemplate JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //写sql语句,根据username查询 //第二个参数是RowMapper接口,需要自己写类实现接口,自己做数据封装 String sql = "select * from user where username = ?"; User user = jdbcTemplate.queryForObject(sql,new MyRowMapper(),"lucy"); System.out.println(user); }
class MyRowMapper implements RowMapper<User>{ @Override public User mapRow(ResultSet resultSet, int num) throws SQLException { //1从结果集里面把数据得到 String username = resultSet.getString("username"); String password = resultSet.getString("password"); //2把得到的数据封装到对象里面 User user = new User(); user.setUsername(username); user.setPassword(password); return user; } }
- 查询返回list集合
自己写类实现接口:MyRowMapper.java同上public void testList(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///web17"); dataSource.setUsername("root"); dataSource.setPassword("123456"); //创建jdbcTemplate JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //写sql语句 String sql = "select * from user"; //调用jdbcTemplate的方法实现 List<User> list = jdbcTemplate.query(sql, new MyRowMapper()); System.out.println(list); }