02-Mybatis中使用dao的实现类

it2025-02-09  12

1. dao类

package cn.lhh.dao; import cn.lhh.domain.User; import java.util.List; public interface IUserDao { /** * 查询所有 * @return */ List<User> findAll(); /** * 更新用户信息 * @param user */ void updateUser(User user); /** * 根据用户id删除用户 * @param userId */ void deleteUser(Integer userId); /** * 根据用户姓名查找 * @param userName * @return */ List<User> findByName(String name); /** * 查找总人数 * @return */ Integer totalNum(); }

2.dao实现类

package cn.lhh.dao.impl; import cn.lhh.dao.IUserDao; import cn.lhh.domain.User; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import java.util.List; public class IUserDaoImpl implements IUserDao { private SqlSessionFactory factory; public IUserDaoImpl(SqlSessionFactory factory) { this.factory = factory; } /** * 查询所有 * @return */ @Override public List<User> findAll() { SqlSession sqlSession = factory.openSession(); List<User> users = sqlSession.selectList("cn.lhh.dao.IUserDao.findAll"); sqlSession.close(); return users; } /** * 更新用户信息 * @param user */ @Override public void updateUser(User user) { SqlSession sqlSession = factory.openSession(); sqlSession.update("cn.lhh.dao.IUserDao.updateUser",user); sqlSession.commit(); sqlSession.close(); } /** * 删除用户信息 * @param userId */ @Override public void deleteUser(Integer userId) { SqlSession sqlSession = factory.openSession(); sqlSession.delete("cn.lhh.dao.IUserDao.deleteUser",userId); sqlSession.commit(); sqlSession.close(); } /** * 根据用户名模糊查询用户 * @param name * @return */ @Override public List<User> findByName(String name) { SqlSession sqlSession = factory.openSession(); List<User> users = sqlSession.selectList("cn.lhh.dao.IUserDao.findByName", name); return users; } /** * 查询用户数量 * @return */ @Override public Integer totalNum() { SqlSession sqlSession = factory.openSession(); int count = sqlSession.selectOne("cn.lhh.dao.IUserDao.totalNum"); return count; } }

3. IUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.lhh.dao.IUserDao"> <!--查询所有用户信息--> <select id="findAll" resultType="cn.lhh.domain.User"> select * from user; </select> <!--跟新用户信息--> <update id="updateUser" parameterType="cn.lhh.domain.User"> update user set username=#{username},birthday=#{birthday},gender=#{gender} where id=#{id} </update> <delete id="deleteUser" parameterType="integer"> delete from user where id=#{userId} </delete> <select id="findByName" parameterType="string" resultType="cn.lhh.domain.User"> select * from user where username like #{name} </select> <select id="totalNum" resultType="integer"> select count(id) from user; </select> </mapper>

4. 测试

package cn.lhh.test; import cn.lhh.dao.IUserDao; import cn.lhh.dao.impl.IUserDaoImpl; import cn.lhh.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.InputStream; import java.util.Date; import java.util.List; public class MybatisTest { private InputStream is; private IUserDao userDao; @Before public void init() throws Exception { is = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); userDao = new IUserDaoImpl(factory); } @After public void destroy() throws Exception { is.close(); } /** * 测试查询所有 * * @throws Exception */ @Test public void testFindAll() throws Exception { List<User> users = userDao.findAll(); for (User user : users) { System.out.println(user); } } /** * 测试查询更新 */ @Test public void testUpdateUser() { User user = new User(); user.setId(3); user.setUsername("安抚哈"); user.setGender("男"); user.setBirthday(new Date()); userDao.updateUser(user); } /** * 测试删除用户信息 */ @Test public void testDeleteUser() { userDao.deleteUser(9); } /** * 测试模糊查询用户 */ @Test public void testFindByName() { List<User> users = userDao.findByName("%王%"); for (User user : users) { System.out.println(user); } } /** * 测试总用户数 */ @Test public void testTotalNum() { Integer totalNum = userDao.totalNum(); System.out.println("总用户数:" + totalNum); } }

注意:

当用dao的实现类查询总记录数时,用的时selectOne();
最新回复(0)