原始dao的開發與動態代理開發

1、原始dao的開發

1.1 創建映射文件

1.2 新建Dao接口

public interface UserDao {
	
	/**根據用戶ID查詢用戶信息
	 */
	User getUserById(Integer id);
	
	/**
	 * 根據用戶名查找用戶列表
	 */
	List<User> getUserByUserName(String name);
	
	/**
	 * 添加用戶
	 */
	void insertUser(User user);
}

1.3新建接口實現類

public class UserDaoImpl implements UserDao {

	@Override
	public User getUserById(Integer id) {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		User user = sqlSession.selectOne("user.getUserById", id);
		sqlSession.close();
		return user;
	}

	@Override
	public List<User> getUserByUserName(String name) {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		List<User> list = sqlSession.selectList("user.getUserByName", name);
		sqlSession.close();
		return list;
	}

	@Override
	public void insertUser(User user) {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		sqlSession.insert("user.insertUser", user);
		sqlSession.commit();
		sqlSession.close();
	}

}

1.4 使用dao進行測試

public class UserDaoTest {

	@Test
	public void testGetUserById() {
		UserDao userDao = new UserDaoImpl();
		User user = userDao.getUserById(30);
		System.out.println(user);
	}

	@Test
	public void testGetUserByUserName() {
		UserDao userDao = new UserDaoImpl();
		List<User> list = userDao.getUserByUserName("張");
		for (User user : list) {
			System.out.println(user);
		}
	}

	@Test
	public void testInsertUser() {
		UserDao userDao = new UserDaoImpl();
		User user = new User();
		user.setUsername("張飛3");
		user.setAddress("深圳市黑馬");
		user.setBirthday(new Date());
		user.setSex("1");
		userDao.insertUser(user);
	}

}

2 動態代理dao開發規則

2.1 動態代理dao開發規則

  1. namespace必需是接口的全路徑名
  2. 接口的方法名必需與映射文件的sql id一致
  3. 接口的輸入參數必需與映射文件的parameterType類型一致
  4. 接口的返回類型必須與映射文件的resultType類型一致

2.2 開發步驟

2.2.1 創建映射文件
2.2.2 創建接口,注意開發規則
2.2.3 在覈心配置文件中加載映射文件
2.2.4 測試動態代理Dao
public class UserMapperTest {

	@Test
	public void testGetUserById() {
		// 加載配置得到SqlSession
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		// 獲取代理對象
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		// 查詢數據
		User user = userMapper.getUserById(30);
		System.out.println(user);
		// 關閉資源
		sqlSession.close();
	}

	@Test
	public void testGetUserByUserName() {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		// 獲取代理對象
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		// 查詢數據
		List<User> list = userMapper.getUserByName("張");
		for (User user : list) {
			System.out.println(user);
		}
		// 關閉資源
		sqlSession.close();
	}

	@Test
	public void testInsertUser() {
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		User user = new User();
		user.setUsername("張飛飛");
		user.setAddress("上海市");
		user.setBirthday(new Date());
		user.setSex("1");
		userMapper.insertUser(user);
		// 提交事務
		sqlSession.commit();
		// 關閉資源
		sqlSession.close();
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章