# ormybatis
**Repository Path**: javahui/ormybatis
## Basic Information
- **Project Name**: ormybatis
- **Description**: ormybaits基于mybatis封装Dao层操作
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 13
- **Forks**: 2
- **Created**: 2016-03-31
- **Last Updated**: 2025-09-05
## Categories & Tags
**Categories**: database-dev
**Tags**: None
## README
##### 1. 加入jar
```xml
pers.richard
ormybatis-spring-starter
${project.version}
```
##### 2. spring配置:
Springboot配置文件方式
```
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/d?useSSL=false&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
```
##### 3. 加入插件,生成基本代码
pers.richard
ormybatis-maven-plugin
x.x.x-SNAPSHOT
##### 4. 在项目的 src/main/resources目录下增加ormybatis.properties文件用以生成代码
jdbc.url=jdbc:mysql://localhost:3306/dbName?useSSL=true
jdbc.username=root
jdbc.password=123456
table.name=user
#生成src/main/resources路径下的文件夹名
sqlFile.path=mapper
# DAO类包路径
dao.package.path=pers.richard.example.dao
# po类包路径
domain.package.path=pers.richard.example.po
#Dao类名(可选)
dao.class.name=
#Domain bean类名(可选)
domain.class.name=
##### 3. 运行mvn ormybatis:gen 生成dao类,po类,mapping xml文件
###### 3.1. @DaoConfig注解
table(表名)
###### 3.2. 查询demo
```java
import java.util.Arrays;
@DaoConfig(table = "user")
public class UserDao extends OrmybatisBaseDao {
//主键id查询
public void selectId() {
//一个id查询
User u1 = super.selectOne(1);
User u2 = super.selectOne("1");
//Where id in (1,2) --多id查询
List userList2 = super.selectList(Arrays.asList(1, 2));
//Where id in (1,2,10,20) --多id查询
List list = new ArrayList();
liset.add("1, 2");
liset.add("10, 20");
List userList2 = super.selectList(list);
}
//一个条件查询
public void selectOneFieldWhere() {
//默认1:没有设置order by排序,则默认加上order By id desc
//默认2:默认加上Limit 1,防止查出多条查询
//WHERE age = 18 Limit 1 Order BY id desc
User u1 = super.selectOne(Field.AGE, "18");//返回一个对象
User u2 = super.selectOne(Field.AGE, "");//传入空,不执行查询,返回null
//传入空,不执行查询,selectList返回空集合,不是null
List list = super.selectList(Field.NAME, "");
log.info(list.toString());//不会报NullPointException 返回[]
}
public void page() {
//分页列表查询
Bean reqBean = new Bean()
.setPageSize(20)
.setPageNo(1)
.setAge(18)//数字类型 使用等于查询
.setName("wang");
Select select = Select.create().list(reqBean)
.eq(Field.NAME, reqBean.getName());//不加这行默认like查询,加上则用等于查询
// WHERE age = 18 and wang = 'wang' ORDER BY id desc Limit 20
List userList = super.selectPage(select);
}
public void selectWhere() {
//如果没设置order by排序,则默认加上order By id desc
//select * from user ORDER BY id desc
super.selectAll();
//select * from user ORDER BY age DESC limit 10
super.selectList(Select.create().orderDesc(Field.AGE).limit(10));
Select sel = Select.create()
.eq(Field.NAME, "")//忽略空的查询条件
.eq(Field.STATUS, Arrays.asList(1, 2)); //自动为List根据javaBean po中的类型
User u = super.selectOne(sel); //WHERE status in (0,1) ORDER BY id Limit 1
List list = super.selectList(select1); //WHERE status in (0,1) ORDER BY id Limit 5000
//查询条件说明
Select s2 = Select.create()
.eq(Field.AGE, "1234")// account_no = '1234'
.like(Field.NAME, "wang")// name LIKE conat('wang', '%')
.likeContains(Field.NAME, "wang") // account_no LIKE conat('%', 'wang', '%')
.gt(Field.AGE, 100) // AGE > 100
.gte(Field.AGE, 100) // AGE >= 100
.lt(Field.AGE, 100) // AGE < 100
.lte(Field.AGE, 100) // AGE <= 100
.isNull(Field.AGE) // age is null
.isNullString(Field.NAME); //name = ''
Select.create()
.likeMulti('abc', Field.NAME, Field.STATUS)// 多字段or模糊查( name LIKE conat('%','abc','%') or status LIKE conat('%','abc','%') )
.eqMulti('abc', Field.NAME, Field.STATUS);// 多字段or等于( name='abc' or status ='abc')
//时间范围的查询,如果Field字段是Date日期,同时使用 大于, 小于等范围查询,则自动转为(yyyy-MM-dd HH:mm:ss)格式
//传入值的格式支持各种形式
//WHERE create_time >= '2020-01-01 00:00:00' and create_time <= '2020-12-31 11:59:59'
Select.create(Select.create().gte(Field.CREATE_TIME, '2020-01-01').lte(Field.CREATE_TIME, '2020-12-31'));
Select.create(Select.create().betweenDate(Field.CREATE_TIME, '2020-01-01', '2020-12-31'));//效果一样
Map paramMap = new HashMap<>();
paramMap.put("age", 1234); // age='1234'(默认转为下划线命名法)
paramMap.put("status", Arrays.asList(1,2)); // acc_status in (0, 1) 自动变成in多个值查询
Select.create(paramMap);
Bean bean = new Bean()
.setPageNum(1)
.setPageSize(20)
.setName("jack")
.setStartTime("2021/01/01")
.setEndTime("2021/10/01");
//where name like ('%'||'jack'||'%') and create_time>='2021-01-01 00:00:00' and create_time<='2021-10-01 00:00:00' limit 20 //自动范围查询和分页查询
Select.create(bean);
//Where name='jack' and createTime>='2021-01-01 00:00:00' and create_time<='2021-10-01 00:00:00' limit 20
Select.create().list(bean);//多用于列表页面分页模糊查询 String类型使用like其它类型使用 =
//Where create_time>='2000-01-01 00:00:00' AND create_time<='2020-12-31 23:59:59'
Map map = new HashMap();
map.put("startTime", "2000年");//bean有startTime属性则表示查询开始起始时间
map.put("endTime", "2020");//bean有endTime属性则表示查询开始结束时间
Select.create(map);
Select.create(Field.STATUS, 0).orderDesc(Field.ID).limit(5);//status=0按Id倒序前5
Select.create(Field.STATUS, 0).orderDesc(Field.ID).limitPage(2, 20); //status=0按Id倒序取第2页20条
Select.create().eval("age = 18"); //注入sql查询语句, where age = 18
Select.create().eval("{} = {}", "id", 100); //占位符形式, where id = 100
}
//只查询指定的单条字段
public void selectField() {
//SELECT id FROM user WHERE status = 0 Order By id desc Limit 5000
List ids = super.selectListByField(Field.ID, Select.create(Field.STATUS, 0));
//SELECT id FROM user WHERE status = 0 Order By id desc Limit 1
Integer id = super.selectOneByField(Field.ID, Select.create(Field.STATUS, 0));
}
//统计语句
public void count() {
//select count(1) from table_name where status = 0 查status=0有多少条记录
Integer count = super.count(Select.create(Field.STATUS, 0));
super.sum(select);//合计
super.avg(select);//平均值
}
//分组group by统计语句
public List group() {
//select date_format(create_time,'%Y-%m' as month,STATUS as status, count(ID) as countNum FROM table_name
//where name = 'jack' group by month,status
//order by month having countNum > 0
SelectGroup selectGroup = SelectGroup.create()
.whereEq(Field.NAME, "jack")
.field("date_format(create_time,'%Y-%m')", "month").field(Field.STATUS)
.count(Field.id, "countNum")
.orderDesc("month")
.having("countNum > 0");
return super.selectListGroup(selectGroup, JavaBean.class);
}
//自定义SQL查询语句
public void getAgeByName(String name) {
//默认按当前dao的方法名去查找mapper select id
Map resultMap = super.selectOneMapperStatementByMethodName(name);
List