作为一个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 {} 首先,以下是我们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 条评论) “” |