tk.mybatis操作数据库,就是这么方便

一、tk.mybatis简介

作为一个Java Boy,CRUD那是最基本的看家本领。mybatis是我们常用的Spring三大组件之一。tk.mybatis就是基于mybatis的一个工具,对底层SQL进行了封装,封装了很多接口,让我们可以快速实现我们需要的CRUD业务。

对于单表的增删改查,使用tk.mybatis非常方便,代码就可以实现。如果要联表的话,还是xml方式更灵活一些。

二、如何使用

tk.mybatis配置还是比较简单的。

1、增加tk.mybatis依赖

    tk.mybatis    mapper    4.1.5

2、构建实体类

@Data@Entitypublic class User implements Serializable {    @Id    @KeySql(useGeneratedKeys = true)    private Integer id;    private String name;    private Integer age;}

3、创建mapper,继承Mapper和MySqlMapper

@Repositorypublic interface UserMapper extends Mapper , MySqlMapper {}

三、API

首先,以下是我们mapper继承到的类的一些方法。

然后介绍两个类Example和Example.Criteria

(1)Example,Example相当于SQL中的Where语句。

(2)Example.Criteria,相当于where语句中的条件语句。

四、实战

1、查询

(1)通过主键id查询

@Overridepublic User findById(int id) {    return userMapper.selectByPrimaryKey(id);}

(2)查找全部记录

@Overridepublic List findAll() {    return userMapper.selectAll();}

(3)查找某一记录

返回结果只能为空或者一个记录,如果有多个记录,就会抛出异常

@Overridepublic User findOne(User user) {    //只是返回结果只能为空或者一个,如果有多个,则抛出异常。    return userMapper.selectOne(user);}

(4)条件查询

参数实体类中哪些字段不为 null,就会被作为 select sql 语句中的条件字段,且字段之间的关系是 and

@Overridepublic List find(User user) {    //参数实体类中哪些字段不为 null,就会被作为 select sql 语句中的条件字段,且字段之间的关系是 and    return userMapper.select(user);}

通过Example和Criteria查询

@Overridepublic List findExample(User user) {    Example example = new Example(User.class);    Example.Criteria criteria = example.createCriteria();    //筛选条件    criteria.andEqualTo("name",user.getName());    //criteria.andCondition("name=",user.getName());    //criteria.andEqualTo("age",user.getAge());    //criteria.orEqualTo("age",user.getAge());    Example.Criteria criteria1 = example.createCriteria();    //筛选条件    criteria1.andEqualTo("age",user.getAge());    example.or(criteria1);    //排序    example.orderBy("age").desc();    List users = userMapper.selectByExample(example);    return users;}

2、插入和批量插入

(1)单条插入

@Overridepublic void insert(User user) {    /*     * insert,,表有多少个字段,在 tkmybatis 生成的 insert sql 语句中就有多少个字段     * */    userMapper.insert(user);    /*    *  insertSelective,实体类参数中不为 null 的字段就会被考虑    * */    //userMapper.insertSelective(user);}

(2)批量插入

@Overridepublic void insertList(List users) {    /*     * 批量insert,数据库表必须有一个自增主键     * */    userMapper.insertList(users);}

3、更新

@Overridepublic void update(User user) {    /*    * updateByPrimaryKey,根据主键字段准确地修改某一条记录    * */    //userMapper.updateByPrimaryKey(user);    /*    * 根据主键字段准确地修改某一条记录的部分字段(实体类参数的不为 null 的字段)    * */    userMapper.updateByPrimaryKeySelective(user);    /*     * 第一个参数是新记录,第二参数是example对象,用新记录替换掉符合条件的旧记录     * */    /*User one = new User();    one.setName("james");    Example example = new Example(User.class);    Example.Criteria criteria = example.createCriteria();    criteria.andEqualTo("id",user.getId());    userMapper.updateByExampleSelective(one,example);*/}

4、删除

@Overridepublic void delete(User user) {    log.info("delete User:{}",user);    /*    * 通过主键删除    * */    //userMapper.deleteByPrimaryKey(user);    /*    * user中字段不为null的,就会被作为条件    * */    //userMapper.delete(user);    /*    * example,构造条件    * */    Example example = new Example(User.class);    Example.Criteria criteria = example.createCriteria();    criteria.andEqualTo("id",user.getId());    //criteria.andEqualTo("age",user.getAge());    userMapper.deleteByExample(example);}
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章