编程语言
首页 > 编程语言> > Java -- MyBatis学习笔记5、getMapper

Java -- MyBatis学习笔记5、getMapper

作者:互联网

1、为什么要使用Dao代理来实现CURD?

观察笔记4可以发现、在传统Dao层开发模式中、Dao接口实现类并没有干什么实质性的工作,它仅仅就是通过SqlSession的相关API、根据用户提供的命名空间和id值、定位到映射mapper文件中相应的SQL语句,真正对DB进行操作的工作其实是由框架通过mapper中的SQL完成的。

MyBatis框架就抛开了 Dao的实现类,直接定位到映射文件mapper中的相应SQL语句,对DB进行操作。这种对Dao的实现方式称为Mapper的动态代理方式。Mapper动态代理方式无需程序员实现 Dao 接口。接口是由 MyBatis 结合映射文件自动生成的动态代理实现的。

2、在MyBatis中如何使用代理、直接找到对应的mapper文件?

3、代码实现:

    private UserInfoDao userInfoDao;
    private SqlSession sqlSession;
    @Before
    public void init() throws IOException
    {
        this.sqlSession = MyBatisUtils.getSqlSession();
        this.userInfoDao = this.sqlSession.getMapper(UserInfoDao.class);
    }
    @After
    public void finish()
    {
        //关闭selectList,释放资源
        this.sqlSession.close();
    }
@Test
    public void selectAll()
    {
        List<UserInfo> userList = userInfoDao.selectAll();
        //循环输出集合中的结果
        userList.forEach(x -> System.out.println(x));
    }
    @Test
    public void selectUser()
    {
        UserInfo userInfo = this.userInfoDao.selectUser(2);
        System.out.println(userInfo);
    }

    @Test
    public void insert()
    {
        UserInfo userInfo = new UserInfo();
        userInfo.setName("王昭君");
        userInfo.setAge(16);
        int result = this.userInfoDao.insert(userInfo);
        sqlSession.commit();
        System.out.println(result);
    }

    @Test
    public void update()
    {
        UserInfo userInfo = new UserInfo();
        userInfo.setId(2);
        userInfo.setName("李白");
        userInfo.setAge(20);
        int result = this.userInfoDao.update(userInfo);
        sqlSession.commit();
        System.out.println(result);
    }

    @Test
    public void delete()
    {
        int result = this.userInfoDao.delete(6);
        sqlSession.commit();
        System.out.println(result);
    }

这样、通过代理的方式、直接找到对应的mapper文件里的标签和语句,更直接简单和简洁。

标签:getMapper,Java,--,void,Dao,userInfoDao,sqlSession,userInfo,public
来源: https://www.cnblogs.com/dcy521/p/14745940.html