TkMybatis

2,365 阅读1分钟

TkMybatis

一 优势

(1)接入比较方便,常见CRUD 都已经封装完成。接入即可使用。

(2)无需再去维护xml 。不需要关注sql的使用。

(3)提升开发效率。

二 springboot集成tkMybatis步骤

1、pom引入TkMybatis的Maven依赖

image-20210722155705272

2、配置对应实体类(表对应的实体PO)

image-20210721170312709

[@GeneratedValue]  blog.csdn.net/sswqzx/arti… 

3、Mapper集成tkMybatis的Mapper接口

image-20210721171137637

image-20210721175038707

Mapper实现tkMybaties基本CRUD操作,InsertListmapper实现批量插入操作,所有这里使用BasicDao包装两个接口。

4、扫描Mapper接口

@MybatisRepository 自定义注解,spring启动后自动扫描mapper接口

image-20210721174404046

image-20210721172147633

5、数据操作

业务层通过mapper接口,使用TkMybatis提供的方法执行sql

image-20210721174209178

三 TkMybatis常用方法

image-20210721174936907

1、查询全部

    public List<SysUser> getUserList() {
        return sysUserMapper.selectAll();
    }

2、按主键查询

    public SysUser getUserById(Long id) {
    
        return  sysUserMapper.selectByPrimaryKey(id);
    }

3、按主键修改(只更新有值的字段)

    public void update(SysUser user) {
​
        sysUserMapper.updateByPrimaryKeySelective(user);
    }

4、按主键修改(更新所有字段)

    public void update(SysUser user) {
​
        sysUserMapper.updateByPrimaryKey(user);
    }

5、按主键删除

    public void delete(Long id) {
    
        sysUserMapper.deleteByPrimaryKey(id);
    }

6、按条件精确查询

    public List<SysUser> getUserList(String loginName) {
        Example example = new Example(SysUser.class);
        if(StringUtils.isNotBlank(loginName)){
            example.createCriteria().andEqualTo("loginName", loginName);
        }
        return sysUserMapper.selectByExample(example);
    }

7、按条件模糊查询

    public List<SysUser> getUserList(String loginName) {
        Example example = new Example(SysUser.class);
        if(StringUtils.isNotBlank(loginName)){
            example.createCriteria().andLike("loginName", "%" + loginName + "%");
        }
        return sysUserMapper.selectByExample(example);
    }

8、按时间段查询并排序

    public List<SysUser> getUserList(String startDate, String endDate) {
        Example example = new Example(SysUser.class);
        Example.Criteria criteria = example.createCriteria();
        if (StringUtils.isNotBlank(startDate)) {
            criteria.andGreaterThanOrEqualTo("createTime", startDate);
        }
        if (StringUtils.isNotBlank(endDate)) {
            criteria.andLessThanOrEqualTo("createTime", endDate);
        }
        example.setOrderByClause("create_time desc");
        return sysUserMapper.selectByExample(example);
    }

9、按条件修改(只更新有值的字段)

    public void update(SysUser user) {
        Example example = new Example(SysUser.class);
        example.createCriteria().andEqualTo("loginName", user.getLoginName());
        sysUserMapper.updateByExampleSelective(user, example);
    }

10、按条件修改(更新所有字段)

    public void update(SysUser user) {
        Example example = new Example(SysUser.class);
        example.createCriteria().andEqualTo("loginName", user.getLoginName());
        sysUserMapper.updateByExample(user, example);
    }

11、按条件删除

    public void delete(String loginName) {
        Example example = new Example(SysUser.class);
        example.createCriteria().andEqualTo("loginName", loginName);
        sysUserMapper.deleteByExample(example);
    }

12、复杂条件查询

    public List<SysUser> getUserList(String loginName, String password) {
        Example example = new Example(SysUser.class);
        Example.Criteria criteria1 = example.createCriteria();
        criteria1.andEqualTo("loginName", loginName);
        criteria1.andEqualTo("password", password);
        Example.Criteria criteria2 = example.createCriteria();
        criteria2.andEqualTo("email", loginName);
        criteria2.andEqualTo("password", password);
        example.or(criteria2);
        return sysUserMapper.selectByExample(example);
    }
SELECT * FROM sys_user WHERE ((login_name = ? AND password = ?) OR (email = ? AND password = ?))