simple-mybatis

simple mybatis project for Spring Boot

License

License

Categories

Categories

MyBatis Data ORM
GroupId

GroupId

com.codingapi
ArtifactId

ArtifactId

simple-mybatis
Last Version

Last Version

1.2.1
Release Date

Release Date

Type

Type

jar
Description

Description

simple-mybatis
simple mybatis project for Spring Boot
Project URL

Project URL

https://github.com/codingapi/simple-mybatis
Source Code Management

Source Code Management

https://github.com/codingapi/simple-mybatis

Download simple-mybatis

How to add to project

<!-- https://jarcasting.com/artifacts/com.codingapi/simple-mybatis/ -->
<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>simple-mybatis</artifactId>
    <version>1.2.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.codingapi/simple-mybatis/
implementation 'com.codingapi:simple-mybatis:1.2.1'
// https://jarcasting.com/artifacts/com.codingapi/simple-mybatis/
implementation ("com.codingapi:simple-mybatis:1.2.1")
'com.codingapi:simple-mybatis:jar:1.2.1'
<dependency org="com.codingapi" name="simple-mybatis" rev="1.2.1">
  <artifact name="simple-mybatis" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.codingapi', module='simple-mybatis', version='1.2.1')
)
libraryDependencies += "com.codingapi" % "simple-mybatis" % "1.2.1"
[com.codingapi/simple-mybatis "1.2.1"]

Dependencies

compile (5)

Group / Artifact Type Version
org.hibernate.javax.persistence : hibernate-jpa-2.1-api jar 1.0.0.Final
commons-beanutils : commons-beanutils jar 1.9.4
com.github.pagehelper : pagehelper jar 5.1.10
com.google.guava : guava jar 28.1-jre
org.apache.commons : commons-lang3 jar 3.10

provided (1)

Group / Artifact Type Version
org.mybatis : mybatis jar 3.4.6

test (2)

Group / Artifact Type Version
org.junit.jupiter : junit-jupiter-api jar 5.6.2
org.junit.jupiter : junit-jupiter-engine jar 5.6.2

Project Modules

There are no modules declared in this project.

Build Status Maven Central codecov

simple-mybatis

前言

随着springboot开发方式的流行,但是还有好多人在使用mybatis时依旧采用xml的方式配置mapper,该框架出现的主要原因是为了让Mybatis更方便的在springboot项目下上使用。

框架说明

  • 框架依赖并兼容jpa注解
  • 提供了常用操作的Mapper封装
  • 基于pagehelper提供了分页的规范支持
  • 提供Query方式对查询语句的支持
  • 提供Tree数据格式的规范支持

仓库地址

<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>simple-mybatis</artifactId>
    <version>${last.version}</version>
 </dependency>

使用说明

  • jpa注解的使用
@Data
@Table(name = "t_demo")
public class Demo implements ITree<Long>{ //ITree根据业务需要可不实现

  //Id 注解  
  @Id
  private Long id;

  //数据库字段与属于想一致时可忽略@Column注解
  private Long superId;

  private String name;

  //字段名称  
  @Column(name = "s_module")
  private String module;

  private String myName;
  
  //忽略字段 
  @Transient
  private String test;

}
  • CommandMapper 提供了所有常用的写操作
  //保存数据,会返回主键Id
  int save(T t);

  //批量保存  
  int saveAll(List<T> list);

  //修改数据,修改数据只会替换非null对象
  int update(T t);

  //删除数据,删除条件为Id
  int delete(T t);

  //批量删除,删除条件为Id
  int deleteAll(List<T> list);

  //通过Id直接删除
  int deleteById(Object id);

  //通过Id批量删除
  int deleteAllById(List id);
  • QueryMapper提供常用的查询操作
  //通过Id查询
  T getById(Object id);

  //查询属于数据
  List<T> findAll();

  //通过Query查询数据
  List<T> query(Query query);

  //通过Query查询试图数据,返回List Map对象
  List<Map<String,Object>> queryMap(Query query);

  //通过Query查询试图数据,返回List Bean对象
  <V> List<V> queryView(Class<V> clazz, Query query);
  • SimpleMapper提供了QueryMapperCommandMapper的功能

  • IPageQuery 提供基于MybatisHelper的分页支持

    PageList<Demo> pageList =  demoMapper.page(1, 5, demoMapper::findAll);
	log.info("page:{}",pageList);
  • ITreeQuery 提供树形数据结构组装
    //实现ITree接口
    public class Demo implements ITree<Long>{
      //fields get set ...
    }

    List<TreeList<Demo>> treeLists =  demoMapper.tree( demoMapper::findAll,0L);
	log.info("treeLists:{}",treeLists);
  • query使用说明
    query 通过QueryBuilder来创建,当查询返回的是表的数据,则不需要写select语句,直接拼接where()查询条件。
    若查询返回的是视图格式的数据则需要写select语句,select语句中可以写join关联.
    select语句中的字段可以用下划线,也可以直接处理成小驼峰。都可以转成java bean对象。
    @Test
    void viewList(){
        List<DemoView> list =
                demoMapper.queryView(
                        DemoView.class,
                        QueryBuilder.Build()
                                .select("select * from t_demo d left join t_refrigerator r on d.id = r.ID ")
                                .where()
                                .condition("d.id between #{small} and #{larger}", Map.of("small",1,"larger",10))
                                .or()
                                .condition("r.state = #{state}",1)
                                .and()
                                .condition("d.id in (${ids})",1,2,3,4,5,6,7,8,9,10)
                                .or()
                                .condition("d.name like '%${name}%'","2")
                                .orderBy("d.id desc")
                                .builder());
        log.info("list:{}",list);
    }

    @Test
    void queryList(){
        //select * from t_demo where name = '123'
        List<Demo> list = demoMapper.query(QueryBuilder.Build().where().condition("name=#{name}","123").builder());
        log.info("list:{}",list);
    }

示例

https://github.com/1991wangliang/simple-mybatis-demo

支持

issue

使用建议

设计数据库时可以先定义类,然后通过jap扫描这些entity来创建数据库,这样做不仅可以完成数据库的设计,也可以直接完成entity的定义,由于框架兼任了jpa注解也不会在框架使用这些entity上出现错误。

com.codingapi

CodingApi

CodingAPI is an open source organization.

Versions

Version
1.2.1
1.2.0
1.1.0
1.0.0