fastmybatis 1.11.1 发布,mybatis 开发利器

栏目: 软件资讯 · 发布时间: 2年前

内容简介:fastmybatis 1.11.1 发布,本次更新内容如下: mapper新增如下方法: E getBySpecifiedColumns(List<String> columns, Query query) 查询单条数据并返回指定字段 <T> T getBySpecifiedColumns(List<String> colum...

fastmybatis 1.11.1 发布,本次更新内容如下:

mapper新增如下方法:

  • E getBySpecifiedColumns(List<String> columns, Query query) 查询单条数据并返回指定字段
  • <T> T getBySpecifiedColumns(List<String> columns, Query query, Class<T> clazz) 查询单条数据并返回指定字段并转换到指定类中
  • List<E> listByIds(Collection<I> ids) 根据多个主键值查询
  • T getColumnValue(String column, Query query, Class<T> clazz) 查询某个字段值
  • List<T> listColumnValues(String column, Query query, Class<T> clazz) 查询指定列,返指定列集合
  • int saveOrUpdate(E entity) 保存或更新(所有字段)
  • int saveOrUpdateIgnoreNull(E entity) 保存或更新(不为null的字段)
  • int deleteByIds(Collection<I> ids) 根据多个主键id删除,在有逻辑删除字段的情况下,做UPDATE操作
  • int deleteByColumn(String column, Object value) 根据指定字段值删除,在有逻辑删除字段的情况下,做UPDATE操作
  • int saveUnique(Collection<E> entitys) 批量保存并去重
  • int saveUnique(Collection<E> entitys, Comparator<E> comparator) 批量保存并去重,指定比较器

  • 新增BaseService通用service

  • 新增IService通用接口

查询单条数据并返回指定字段

有时候只想查询某一行某几列数据,

Query query = new Query().eq("id", 6);
TUser tUser = mapper.getBySpecifiedColumns(Arrays.asList("id", "username"), query);

对应SQL:

SELECT id , username FROM `t_user` t WHERE id = 6 AND LIMIT 0,1

查询出来实体类对应的id,usernam字段是有数据的,其它字段为null,也可以转换成其它类:

UserVO userVo = mapper.getBySpecifiedColumns(Arrays.asList("id", "username"), query, UserVO.class);

查询某个字段值

只查询某一行某一列数据

Query query = new Query().eq("id", 6);
String username = mapper.getColumnValue("username", query, String.class);

对应SQL:

SELECT username FROM `t_user` t WHERE id = 6 LIMIT 0,1

查询某一列多行数据,比如查询所有的username

// 年龄大于10岁的所有用户名
Query query = new Query().gt("age", 10);
List<String> usernameList = mapper.listColumnValues("username", query, Integer.class);

对应SQL:

SELECT username FROM `t_user` t WHERE age > 10;

通用Service类

本次新增了一个通用Service类,只需简单继承便具备所有的增删改查功能,使用方法如下:

@Service
public class UserService extends BaseService<TUser/*实体类*/, Integer/*主键类型*/, TUserMapper/*Mapper*/> {

}

如果Service已经继承了其它类,可以通过实现接口解决

public class UserService extends OtherService implements IService<TUser, Integer> {

    @Autowired
    private TUserMapper userMapper;

    @Override
    public CrudMapper<TUser, Integer> getMapper() {
        return userMapper;
    }
}

controller增删改查例子:

/**
 * 增删改查例子
 */
@RestController
public class CrudController {

    @Autowired
    private UserService userService;


    /**
     * 分页查询
     * http://localhost:8080/user/page?id=10
     * http://localhost:8080/user/page?pageIndex=1&pageSize=5
     *
     * @param param
     * @return
     */
    @GetMapping("/user/page")
    public Result<PageInfo<TUser>> page(UserParam param) {
        Query query = param.toQuery();
        PageInfo<TUser> pageInfo = userService.page(query);
        return Result.ok(pageInfo);
    }

    /**
     * 新增记录,这里为了方便演示用了GET方法,实际上应该使用POST
     * http://localhost:8080/user/save?username=jim
     *
     * @param user
     * @return
     */
    @GetMapping("/user/save")
    public Result<Integer> save(TUser user) {
        userService.saveIgnoreNull(user);
        // 返回添加后的主键值
        return Result.ok(user.getId());
    }

    /**
     * 修改记录,这里为了方便演示用了GET方法,实际上应该使用POST
     * http://localhost:8080/user/update?id=10&username=jim
     *
     * @param user 表单数据
     * @return
     */
    @GetMapping("/user/update")
    public Result<?> update(TUser user) {
        userService.updateIgnoreNull(user);
        return Result.ok();
    }

    /**
     * 删除记录,这里为了方便演示用了GET方法,实际上应该使用DELETE
     * http://localhost:8080/user/delete?id=10
     *
     * @param id 主键id
     * @return
     */
    @GetMapping("/user/delete")
    public Result<?> delete(Integer id) {
        userService.deleteById(id);
        return Result.ok();
    }
}

完整的Mapper方法 doc

方法 说明
E getByColumn(String column, Object value) 根据字段查询一条记录
E getById(I id) 根据主键查询
E getByQuery(Query query) 根据条件查找单条记录
E getBySpecifiedColumns(List<String> columns, Query query) 查询单条数据并返回指定字段
<T> T getBySpecifiedColumns(List<String> columns, Query query, Class<T> clazz) 查询单条数据返回指定字段并转换到指定类中
<T> T getColumnValue(String column, Query query, Class<T> clazz) 查询某一行某个字段值
long getCount(Query query) 查询总记录数
List<E> list(Query query) 查询结果集
List<E> listByArray(String column, Object[] values) 根据多个字段值查询结果集
List<E> listByCollection(String column, Collection<?> values) 根据字段多个值查询结果集
List<E> listByColumn(String column, Object value) 根据字段查询结果集
List<E> listByIds(Collection<I> ids) 根据多个主键查询
List<E> listBySpecifiedColumns(List<String> columns, Query query) 查询返回指定的列,返回实体类集合
<T> List<T> listBySpecifiedColumns(List<String> columns, Query query, Class<T> clazz) 查询返回指定的列,返指定类集合
<T> List<T> listColumnValues(String column, Query query, Class<T> clazz) 查询指定列,返指定列集合
PageInfo<E> page(Query query) 分页查询
<R> PageInfo<R> page(Query query, Function<E, R> converter) 查询结果集,并转换结果集中的记录,转换处理每一行
<R> PageInfo<R> page(Query query, Supplier<R> target, Consumer<R> format) 查询结果集,并转换结果集中的记录,并对记录进行额外处理
<T> PageInfo<T> page(Query query, Supplier<T> target) 查询结果集,并转换结果集中的记录
<R> PageInfo<R> pageAndConvert(Query query, Function<List<E>, List<R>> converter) 查询结果集,并转换结果集中的记录,转换处理list
<T> PageInfo<T> pageBySpecifiedColumns(List<String> columns, Query query, Class<T> clazz) 查询返回指定的列,返回分页数据
PageEasyui<E> pageEasyui(Query query) 查询返回easyui结果集
<T> PageEasyui<T> pageEasyui(Query query, Class<T> clazz) 查询返回easyui结果集,并转换结果集中的记录
E forceById(I id) 根据主键查询强制查询,忽略逻辑删除字段
int save(E entity) 保存,保存所有字段
int saveBatch(Collection<E> entitys) 批量保存
int saveIgnoreNull(E entity) 保存,忽略null字段
int saveMultiSet(Collection<E> entitys) 批量保存,兼容更多的数据库版本,忽略重复行,此方式采用union的方式批量insert
int saveOrUpdate(E entity) 保存或修改,当数据库存在记录执行UPDATE,否则执行INSERT
int saveOrUpdateIgnoreNull(E entity) 保存或修改,忽略null字段,当数据库存在记录执行UPDATE,否则执行INSERT
int saveUnique(Collection<E> entitys) 批量保存,去除重复行,通过对象是否相对判断重复数据,实体类需要实现equals方法
int saveUnique(Collection<E> entitys, Comparator<E> comparator) 批量保存,去除重复行,指定比较器判断
int update(E entity) 更新,更新所有字段
int updateByQuery(E entity, Query query) 根据条件更新
int updateIgnoreNull(E entity) 更新,忽略null字段
int updateByMap(Map<String, Object> map, Query query) 根据条件更新,map中的数据转化成update语句set部分,key为数据库字段名
int delete(E entity) 删除,在有逻辑删除字段的情况下,做UPDATE操作
int deleteByColumn(String column, Object value) 根据指定字段值删除,在有逻辑删除字段的情况下,做UPDATE操作
int deleteById(I id) 根据id删除,在有逻辑删除字段的情况下,做UPDATE操作
int deleteByIds(Collection<I> ids) 根据多个主键id删除,在有逻辑删除字段的情况下,做UPDATE操作
int deleteByQuery(Query query) 根据条件删除,在有逻辑删除字段的情况下,做UPDATE操作
int forceDelete(E entity) 强制删除(底层根据id删除),忽略逻辑删除字段,执行DELETE语句
int forceDeleteById(I id) 根据id强制删除,忽略逻辑删除字段,执行DELETE语句
int forceDeleteByQuery(Query query) 根据条件强制删除,忽略逻辑删除字段,执行DELETE语句

 

关于fastmybatis

fastmybatis是一个mybatis开发框架,其宗旨为:简单、快速、有效。

  • 零配置快速上手
  • 无需编写xml文件即可完成CRUD操作
  • 支持 mysql 、sqlserver、oracle、postgresql、sqlite
  • 支持自定义sql,对于基本的增删改查不需要写SQL,对于其它特殊SQL(如统计SQL)可写在xml中
  • 支持与spring-boot集成,依赖starter即可
  • 支持插件编写
  • 轻量级,无侵入性,是官方mybatis的一种扩展

 


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java常用算法手册

Java常用算法手册

2012-5 / 59.00元

《Java常用算法手册》分三篇,共13章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏、密码学等领域中的应用;最后,列举了算法的一些常见面试题。书中知识点覆盖全面,结构安排紧凑,讲解详细,实例丰富。全书对每一个知识点都给出了相应的算法及应用实例,虽然这些例子都是以Java语言来编......一起来看看 《Java常用算法手册》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具