Spring编写DAO实现数据的增删改查为了⽅便DAO中注⼊JdbcTemplate,Spring为每⼀个持久化技术都提供了⽀持类:
ORM 持久化技术⽀持类
JDBC org.support.JdbcDaoSupport
Hibernate 3.hibernate3.support.HibernateDaoSupport
iBatis(MyBatis)ibatis.support.SqlMapClientDaoSupport package cn.demo2;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.JdbcTemplate;
import org.RowMapper;
import org.support.JdbcDaoSupport;
/**
* ⽤模板实现数据库的操作
* 注:如果使⽤以下代码在Dao⾥⽐较⿇烦
* private JdbcTemplate jdbcTemplate;//给予set⽅法并在xml⽂件设置
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
* 所以可以采⽤继承spring核⼼库⾥JdbcDaoSupport
* @author Administrator
*
*/
public class UserDao extends JdbcDaoSupport {
/**
* 插⼊数据
* @param user
*/
public void add(User user){
String sql1="insert into user_info values(null,?)";
}
/**
* 修改数据
* @param user
*/
public void update(User user){
String sql2="update user_info set name=? where id=?";
}
/**
* 查数据表的记录数
* @param user
* @return
*/
public int findConut(User user){
String sql3="select count(*) from user_info";
JdbcTemplate().queryForInt(sql3);
}
/**
* 查指定id的名字
* @param id
* @param id
* @return
*/
public String findNameById(int id){
String sql3="select name from user_info where id=?";
//String.class是⾃⼰获取类型为String
JdbcTemplate().queryForObject(sql3,String.class,id);
}
public void delete(User user){
String sql4="delete from user_info where id=?";
}
/**
* 通过id查该id的所有信息
* @param id
* @return
*/
public User findById(int id){
String sql5="select * from user_info where id=?";
//rowMapper和dbutils的handler类似;需要⾃⼰⼿动封装,编写了类:UserRowMapper()
//注意query时的返回类型别搞错了
User user=(User) JdbcTemplate().queryForObject(sql5, new UserRowMapper(), id);//获得结果到user对象最后再返回  return user;
}
public List<User> findAll(){
String sql6="select * from user_info";
return (List<User>) JdbcTemplate().query(sql6, new UserRowMapper());//获得结果到user对象最后再返回
}
/**
* ⾃定义封装类封装结果集
* @author Administrator
*
*/
class UserRowMapper implements RowMapper<User>{
/**
* rs:结果集
* rowNum:⾏号
*/
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user=new User();
user.Int("id"));//把结果集id数据封到user
user.String("name"));//把结果集name数据封到user
return user;//封完后再返回对象
}
}
}
对应的测试类:
package cn.demo2;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier;
import st.context.ContextConfiguration;
import st.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("l")
public class SpringJdbcTest {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Test
public void demo1() {
//⾃⼰⼿动注⼊属性,做下演⽰,数据本应该从其他层过来
User user=new User();
user.setName("zhangsan02");
userDao.add(user);
userDao.findConut(user);
}
@Test
public void demo2() {
User user=new User();
System.out.println("记录数⽬:"+userDao.findConut(user));
}
@Test
public void demo3() {
System.out.println("指定id的姓名:"+userDao.findNameById(1));
}
@Test
public void demo4() {
System.out.println("指定id对应的全部信息:"+userDao.findById(2)); }
@Test
public void demo5() {
List<User> list= userDao.findAll();//结果是集合
//然后遍历集合
for(User user:list){
System.out.println("表中全部信息:"+user);
}resultset 遍历
}
}
进⾏增删查改(CURD)的操作:
* 保存:update(String args)
* 修改:update(String args)
* 删除:update(String args)
查询:
* 简单查询:
* select count(*) from user; --- queryForInt(String sql);
* select name from user where id = ?; --- queryForObject(String sql,Class args);
* 复杂查询:(返回对象,和对象集合)
* select * from user where id = ? --- queryForObjectString sql,RowMapper<T> args); * select * from user; --- query(String sql,RowMapper<T> args);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。