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