• Mybatis框架(四)逆向工程生成的Mapper接口方法的使用


    一、mapper接口中的函数及方法

    int insertSelective(User record)                  按不为null的字段插入数据

    二、ByPrimaryKey的示例

      1.selectByPrimaryKey

        @Test
        public void testMapper() throws Exception{
            // 4. 创建SqlSession对象
            //openSession():若括号里为true,则设置为事务自动提交。若不填则默认手动提交,将自动提交设置成false,然后调用sqlSession.commit()方法。
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            //5.创建mapper,调用mapper里的方法
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    
            //从数据库中根据主键查询出Po
            User user = userMapper.selectByPrimaryKey(6);
            //Po转Vo,用于数据展示
            UserVo userVo = new UserVo(user);
            System.out.println(userVo);
        }

    结果

      2、insert

      (insertSelective对应的sql语句加入了NULL校验,即只会插入数据不为null的字段值。 insert则会插入所有字段,会插入null。

        也就意味着如果定义了表 default 字段,使用 insert 还是会插入 null 而忽略 default,insertSelective 当字段为 null 时会用 default 自动填充)

        @Test
        public void testInsert() throws Exception{
            // 4. 创建SqlSession对象
            //openSession():若括号里为true,则设置为事务自动提交。若不填则默认手动提交,将自动提交设置成false,然后调用sqlSession.commit()方法。
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            //5.创建mapper,调用mapper里的方法
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    
            //创建一个实体类Vo并增加其属性
            User user = new User();
            user.setId(7);
            user.setName("周杰伦");
            user.setPwd("123456");
    
            userMapper.insert(user);
        }

    结果

    三、Example的使用

    mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分

    xxxExample example = new xxxExample();
    xxxExample.Criteria criteria = example.createCriteria();

    示例

      1、selectByExample

        @Test
        public void selectByExample(){
            // 4. 创建SqlSession对象
            //openSession():若括号里为true,则设置为事务自动提交。若不填则默认手动提交,将自动提交设置成false,然后调用sqlSession.commit()方法。
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            //5.创建mapper,调用mapper里的方法
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    
            //通过criteria构造查询条件
            UserExample userExample = new UserExample();
            //构造自定义查询条件
            UserExample.Criteria criteria = userExample.createCriteria();
            //查询Id为 6 的记录
            criteria.andIdEqualTo(6);
            List<User> userList = userMapper.selectByExample(userExample);
            for (User user:userList) {
                UserVo userVo = new UserVo(user);
                System.out.println(userVo);
            }

    结果

    四、总结

    对于单表操作的话,逆向工程提供的Mapper接口是可以实现简单的CRUD的,对于复杂的业务要求则需要我们自己定义Mapper来写SQL。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  

    图片参考【mybatis逆向工程生成的mapper方法使用(有例子)】更详细

  • 相关阅读:
    [转载]数据库外键的使用
    [转载]我如何筛选简历与选择人员
    [转载]asp.net中使用Row_Number函数分页
    五一,给心情放个假酷狗电台桌面版
    win32建立弹出式菜单
    GetMessage用法错误导致程序不能退出
    win32在程序当中引用菜单
    WM_COMMAND和WM_KEYDOWN消息的wParam,lParam参数
    单链表的释放内存free(delete)的顺序
    win32 GetMenu()和GetSubMenu()
  • 原文地址:https://www.cnblogs.com/omgliyq/p/13670378.html
Copyright © 2020-2023  润新知