原始Dao开发
UserMapper.xml
<select id="queryUserList" resultType="com.company.pojo.Users"> select * from Users </select>
dao目录下UserDao.java接口
public interface UserDao{ List<Users> queryUserList(String sqlId); }
dao目录下实现UserDao.java接口的UserDaoImpl.java类
public class UserDaoImpl implements UserDao{ private SqlSession sqlSession; public UserDaoImpl(SqlSession sqlSession){ this.sqlSession=sqlSession; } @Override public List<Users> queryUserList(String sqlId){ List<Users> users=sqlSession.selectList(sqlId); return users; } }
测试
@Test public void queryUserList() throws Exception{ SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); inputStream.close(); SqlSession sqlSession = sqlSessionFactory.openSession(); UserDaoImpl userDao=new UserDaoImpl(sqlSession); List<Users> users =userDao.queryUserList("com.company.mapper.UserMapper.queryUserList"); users.forEach(System.out::println); sqlSession.close(); }
使用Mapper动态代理方式开发
mapper动态代理开发遵从的规范
- sql映射文件的namespace必须和mapper接口的全限定类名保持一致
- mapper接口的接口方法名必须和xml中sql语句的id属性值保持一致
- mapper接口的接口形参类型必须和sql语句的输入参数类型保持一致
- mapper接口的接口方法返回类型必须和sql语句的resultType保持一致
sql映射文件 UserMapper.xml
<!-- 1) namespace的属性值与mapper接口的全限定类名保持一致 --> <mapper namespace="com.company.mapper.UserMapper"> <!-- 2) id的属性值与mapper接口的方法名保持一致 3) parameterType的属性值与mapper接口方法的参数类型保持一致 4) resultType的属性值与mapper接口方法的返回值类型保持一致 --> <select id="queryUser" parameterType="int" resultType="com.company.pojo.Users"> select * from users where id=#{id} </select> </mapper>
mapper目录下的UserMapper.java接口
public interface UserMapper { Users queryUser(int id); }
测试
@Test public void queryUserById() throws Exception{ SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); inputStream.close(); SqlSession sqlSession = sqlSessionFactory.openSession(); //通过sqlSession.getMapper()获取接口实现 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用接口方法 Users users = userMapper.queryUser(7); System.out.println(users); sqlSession.close(); }
posted on
浙公网安备 33010602011771号