![](./docs/assets/images/logo_en.png)
# MyBatis-Flex is an elegant Mybatis Enhancement Framework.
<p align="center">
<a target="_blank" href="https://search.maven.org/search?q=mybatis-flex%20mybatis-flex">
<img src="https://img.shields.io/maven-central/v/com.mybatis-flex/parent?label=Maven%20Central" alt="Maven" />
</a>
<a target="_blank" href="https://www.apache.org/licenses/LICENSE-2.0.txt">
<img src="https://img.shields.io/:license-Apache2-blue.svg" alt="Apache 2" />
</a>
<a target="_blank" href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html">
<img src="https://img.shields.io/badge/JDK-8-green.svg" alt="jdk-8" />
</a>
<a target="_blank" href="https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html">
<img src="https://img.shields.io/badge/JDK-11-green.svg" alt="jdk-11" />
</a>
<a target="_blank" href="https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html">
<img src="https://img.shields.io/badge/JDK-17-green.svg" alt="jdk-17" />
</a>
<br />
<img src="https://img.shields.io/badge/SpringBoot-v2.x-blue">
<img src="https://img.shields.io/badge/SpringBoot-v3.x-blue">
<a target="_blank" href='https://github.com/noear/solon'><img src="https://img.shields.io/badge/Solon-v2.x-blue"></a>
<br />
<a target="_blank" href='https://gitee.com/mybatis-flex/mybatis-flex'>
<img src='https://gitee.com/mybatis-flex/mybatis-flex/badge/star.svg' alt='Gitee star'/>
</a>
<a target="_blank" href='https://github.com/mybatis-flex/mybatis-flex'>
<img src="https://img.shields.io/github/stars/mybatis-flex/mybatis-flex.svg?logo=github" alt="Github star"/>
</a>
</p>
## Features
- 1、MyBatis-Flex is very lightweight, and it only depends on Mybatis and no other third-party dependencies
- 2、Basic CRUD operator and paging query of Entity class
- 3、Row mapping support, you can add, delete, modify and query the database without entity classes
- 4、Support multiple databases, and expand through dialects flexibly.
- 5、Support combined primary keys and different primary key content generation strategies
- 6、Extremely friendly SQL query, IDE automatically prompts and no worries about mistakes
- 7、More little surprises
## hello world(Without Spring)
**step 1: write entity class**
```java
@Table("tb_account")
public class Account {
@Id(keyType = KeyType.Auto)
private Long id;
private String userName;
private Date birthday;
private int sex;
//getter setter
}
```
**step 2: write mapper class(it needs extends BaseMapper)**
```java
public interface AccountMapper extends BaseMapper<Account> {
//only Mapper interface define.
}
```
**step 3: start query data**
e.g. 1: query by primary key
```java
class HelloWorld {
public static void main(String... args) {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex");
dataSource.setUsername("username");
dataSource.setPassword("password");
MybatisFlexBootstrap.getInstance()
.setDataSource(dataSource)
.addMapper(AccountMapper.class)
.start();
AccountMapper mapper = MybatisFlexBootstrap.getInstance()
.getMapper(AccountMapper.class);
//id=100
Account account = mapper.selectOneById(100);
}
}
```
e.g.2: query list
```java
//use QueryWrapper to build query conditions
QueryWrapper query = QueryWrapper.create()
.select()
.from(ACCOUNT)
.where(ACCOUNT.ID.ge(100))
.and(ACCOUNT.USER_NAME.like("zhang").or(ACCOUNT.USER_NAME.like("li")));
// execute SQL:
// SELECT * FROM tb_account
// WHERE tb_account.id >= 100
// AND (tb_account.user_name LIKE '%zhang%' OR tb_account.user_name LIKE '%li%' )
List<Account> accounts = mapper.selectListByQuery(query);
```
e.g.3: paging query
```java
//use QueryWrapper to build query conditions
QueryWrapper query = QueryWrapper.create()
.select()
.from(ACCOUNT)
.where(ACCOUNT.ID.ge(100))
.and(ACCOUNT.USER_NAME.like("zhang").or(ACCOUNT.USER_NAME.like("li")))
.orderBy(ACCOUNT.ID.desc());
// execute SQL:
// SELECT * FROM tb_account
// WHERE tb_account.id >= 100
// AND (tb_account.user_name LIKE '%zhang%' OR tb_account.user_name LIKE '%li%' )
// ORDER BY tb_account.id DESC
// LIMIT 40,10
Page<Account> accountPage = mapper.paginate(5, 10, query);
```
## QueryWrapper Samples
### select *
```java
QueryWrapper query=new QueryWrapper();
query.select().from(ACCOUNT)
// SQL:
// SELECT * FROM tb_account
```
### select columns
```java
QueryWrapper query=new QueryWrapper();
query.select(ACCOUNT.ID,ACCOUNT.USER_NAME).from(ACCOUNT)
// SQL:
// SELECT tb_account.id, tb_account.user_name
// FROM tb_account
```
```java
QueryWrapper query = new QueryWrapper()
.select(ACCOUNT.ID
, ACCOUNT.USER_NAME
, ARTICLE.ID.as("articleId")
, ARTICLE.TITLE)
.from(ACCOUNT.as("a"), ARTICLE.as("b"))
.where(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID));
// SQL:
// SELECT a.id, a.user_name, b.id AS articleId, b.title
// FROM tb_account AS a, tb_article AS b
// WHERE a.id = b.account_id
```
### select functions
```java
QueryWrapper query=new QueryWrapper()
.select(
ACCOUNT.ID,
ACCOUNT.USER_NAME,
max(ACCOUNT.BIRTHDAY),
avg(ACCOUNT.SEX).as("sex_avg")
).from(ACCOUNT);
// SQL:
// SELECT tb_account.id, tb_account.user_name,
// MAX(tb_account.birthday),
// AVG(tb_account.sex) AS sex_avg
// FROM tb_account
```
### where
```java
QueryWrapper queryWrapper=QueryWrapper.create()
.select()
.from(ACCOUNT)
.where(ACCOUNT.ID.ge(100))
.and(ACCOUNT.USER_NAME.like("michael"));
// SQL:
// SELECT * FROM tb_account
// WHERE tb_account.id >= ?
// AND tb_account.user_name LIKE ?
```
### exists, not exists
```java
QueryWrapper queryWrapper=QueryWrapper.create()
.select()
.from(ACCOUNT)
.where(ACCOUNT.ID.ge(100))
.and(
exists(
selectOne().from(ARTICLE).where(ARTICLE.ID.ge(100))
)
);
// SQL:
// SELECT * FROM tb_account
// WHERE tb_account.id >= ?
// AND EXIST (
// SELECT 1 FROM tb_article WHERE tb_article.id >= ?
// )
```
### and (...) or (...)
```java
QueryWrapper queryWrapper=QueryWrapper.create()
.select()
.from(ACCOUNT)
.where(ACCOUNT.ID.ge(100))
.and(ACCOUNT.SEX.eq(1).or(ACCOUNT.SEX.eq(2)))
.or(ACCOUNT.AGE.in(18,19,20).or(ACCOUNT.USER_NAME.like("michael")));
// SQL:
// SELECT * FROM tb_account
// WHERE tb_account.id >= ?
// AND (tb_account.sex = ? OR tb_account.sex = ? )
// OR (tb_account.age IN (?,?,?) OR tb_account.user_name LIKE ? )
```
### group by
```java
QueryWrapper queryWrapper=QueryWrapper.create()
.select()
.from(ACCOUNT)
.groupBy(ACCOUNT.USER_NAME);
// SQL:
// SELECT * FROM tb_account
// GROUP BY tb_account.user_name
```
### having
```java
QueryWrapper queryWrapper=QueryWrapper.create()
.select()
.from(ACCOUNT)
.groupBy(ACCOUNT.USER_NAME)
.having(ACCOUNT.AGE.between(18,25));
// SQL:
// SELECT * FROM tb_account
// GROUP BY tb_account.user_name
// HAVING tb_account.age BETWEEN ? AND ?
```
### orderBy
```java
QueryWrapper queryWrapper=QueryWrapper.create()
.select()
.from(ACCOUNT)
.orderBy(ACCOUNT.AGE.asc(), ACCOUNT.USER_NAME.desc().nullsLast());
// SQL:
// SELECT * FROM tb_account
// ORDER BY age ASC, user_name DESC NULLS LAST
```
### join
```java
QueryWrapper queryWrapper = QueryWrapper.create()
.select()
.from(ACCOUNT)
.leftJoin(ARTICLE).on(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID))
.where(ACCOUNT.AGE.ge(10));
// SQL:
// SELECT * FROM tb_account
// LEFT JOIN tb_article
// ON tb_account.id = tb_article.account_id
// WHERE tb_account.age >= ?
```
### limit... offset
```java
QueryWrapper queryWrapper = QueryWrapp
没有合适的资源?快使用搜索试试~ 我知道了~
mybatis-flex-1.6.2.zip
共677个文件
java:513个
md:62个
png:20个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 85 浏览量
2023-09-01
08:51:54
上传
评论
收藏 4.02MB ZIP 举报
温馨提示
mybatis-flex-1.6.2.zip源码: 更轻量 MyBatis-Flex 除了 MyBatis 本身,再无任何第三方依赖,因此会带来更高的自主性、把控性和稳定性。在任何一个系统中,依赖越多,稳定性越差。 更灵活 MyBatis-Flex 提供了非常灵活的 QueryWrapper,支持关联查询、多表查询、多主键、逻辑删除、乐观锁更新、数据填充、数据脱敏等等。 更高的性能 MyBatis-Flex 通过独特的架构,没有任何 MyBatis 拦截器、在 SQL 执行的过程中,没有任何的 SQL Parse,因此会带来指数级的性能增长。
资源推荐
资源详情
资源评论
收起资源包目录
mybatis-flex-1.6.2.zip (677个子文件)
mybatis-flex.config 225B
mybatis-flex.config 221B
mybatis-flex.config 137B
mybatis-flex.config 38B
mybatis-flex.config 37B
style.css 386B
.editorconfig 357B
spring.factories 604B
.gitignore 169B
org.springframework.boot.autoconfigure.AutoConfiguration.imports 308B
QueryMethods.java 76KB
FlexDefaultResultSetHandler.java 61KB
TableInfo.java 49KB
BaseMapper.java 40KB
CommonsDialectImpl.java 40KB
GlobalConfig.java 37KB
Db.java 36KB
QueryColumn.java 34KB
MybatisFlexProperties.java 32KB
QueryWrapper.java 31KB
FlexSqlSessionFactoryBean.java 27KB
WhereBuilder.java 20KB
AccountSqlTester.java 20KB
IService.java 19KB
MybatisFlexAutoConfiguration.java 19KB
TableInfoFactory.java 19KB
QueryConditionBuilder.java 19KB
MybatisFlexProcessor.java 18KB
Row.java 17KB
RowMapper.java 17KB
Conditional.java 15KB
EntitySqlProvider.java 15KB
EntityTestStarter.java 15KB
QueryWrapperAdapter.java 14KB
FlexGlobalConfig.java 14KB
FlexConfiguration.java 14KB
RelationManager.java 13KB
RowJdbc3KeyGenerator.java 13KB
UserMapperTest.java 13KB
GeneratorTest.java 12KB
QueryModel.java 12KB
Table.java 12KB
AbstractRelation.java 12KB
Column.java 12KB
MapperUtil.java 12KB
ClassUtil.java 11KB
RowSqlProvider.java 11KB
ConvertUtil.java 10KB
OracleDialect.java 10KB
SnowFlakeIDKeyGenerator.java 10KB
DateUtil.java 10KB
QueryCondition.java 9KB
FlexDataSource.java 9KB
StrategyConfig.java 9KB
CPI.java 9KB
DbChain.java 9KB
BaseQueryWrapper.java 9KB
RowMapperInvoker.java 9KB
ColumnConfig.java 9KB
LimitOffsetProcessor.java 9KB
AccountTester.java 9KB
StringUtil.java 8KB
Page.java 8KB
HttpUtil.java 8KB
RowUtil.java 8KB
MapperModel.java 8KB
ContentBuilder.java 8KB
PropertySetter.java 8KB
TransactionalManager.java 7KB
DbTypeUtil.java 7KB
FuncName.java 7KB
AuditMessage.java 7KB
DmDialect.java 7KB
FlexBatchExecutor.java 6KB
MybatisKeyGeneratorUtil.java 6KB
MybatisLanguageDriverAutoConfiguration.java 6KB
TableConfig.java 6KB
JavadocConfig.java 6KB
AuditManager.java 6KB
FieldQueryManager.java 6KB
WrapperUtil.java 6KB
SqlUtil.java 6KB
RowKeyGenerator.java 6KB
AccountMapperTest.java 6KB
MybatisFlexBootstrap.java 6KB
BaseMapperDocsGen.java 6KB
Masks.java 6KB
ContributorsDocGen.java 6KB
SqlConsts.java 5KB
ToManyRelation.java 5KB
PackageConfig.java 5KB
ActiveRecordTest.java 5KB
DataSourceBuilder.java 5KB
MapperQueryChain.java 5KB
DialectFactory.java 5KB
FieldWrapper.java 5KB
Generator.java 5KB
EntityConfig.java 5KB
CaseSearchQueryColumn.java 5KB
UpdateChain.java 5KB
共 677 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
YunFeiDong
- 粉丝: 33
- 资源: 3849
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功