原始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 2019-07-31 22:15  会飞的金鱼  阅读(115)  评论(0)    收藏  举报