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方法使用(有例子)】更详细

原文地址:https://www.cnblogs.com/omgliyq/p/13670378.html