Comments (9)
闻所未闻。。你写个示例看看,我不确定这个方法想实现什么。
如果指定查询列,已有方法。。如果判断在添加where条件,都有带判断条件的方法。
from mapper.
闻所未闻。。你写个示例看看,我不确定这个方法想实现什么。
如果指定查询列,已有方法。。如果判断在添加where条件,都有带判断条件的方法。
我的问题,确实没有这类方法,就是想给查询条件加个判断,不为空的时候再拼接where条件,列表搜索场景,实际用应该比较少,大部分都是自己写sql,if标签判断
from mapper.
代码是这样的, examplePageDto.getName() 不为空时可以不拼接条件,还有个疑问,ExamplePageDto继承了PageParam,同时使用Mapper和PageHelper分页,有没有更优雅的写法,我现在是在父类自己封装了一个方法调用PageHelper.startPage
io.mybatis.mapper.example.Example<Example> example = new io.mybatis.mapper.example.Example<>();
example.createCriteria().andLike(Example::getName, "%" + examplePageDto.getName() + "%");
return super.pageQuery(examplePageDto, () -> baseMapper.selectByExample(example), s -> {
s.setName("用户_" + s.getName());
return s;
});
还有个问题想问下可不可以不指定@Entity.Column,只指定ID和Table,其他默认驼峰转下划线这样的策略配置,如果需要排除的加个ignore注解即可,有的实体几十几百字段,不用Rui生成器实在是灾难
from mapper.
看代码确认了一下,Example没有带条件的方法,ExampleWrapper有,建议试试Wrapper这种。
最新版本不需要都指定column注解,代码会判断是否排除:
public class DefaultEntityColumnFactory implements EntityColumnFactory {
@Override
public Optional<List<EntityColumn>> createEntityColumn(EntityTable entityTable, EntityField field, Chain chain) {
if (field.isAnnotationPresent(Entity.Column.class)) {
//省略
} else if (!field.isAnnotationPresent(Entity.Transient.class)) {
//省略
}
return Optional.empty();
}
}
from mapper.
最新版本不需要都指定column注解,代码会判断是否排除:
OK,问下,有指定字段和实体属性对应得策略吗?驼峰转下划线
from mapper.
可以指定策略,支持配置文件和注解,用法看这里:https://github.com/mybatis-mapper/mapper/releases/tag/2.0.0
from mapper.
@Entity.Table
注解有下面的属性可以针对单个表进行配置:
/**
* 名称规则、样式,同时应用于表名和列名,不想用于表名时,直接指定表名 {@link #value()}即可。
* <p>
* 2.0版本之前默认为 {@link Style#NORMAL}, 2.0版本之后默认使用 {@link Style#LOWER_UNDERSCORE}
* <p>
* 可以通过 {@link Style#DEFAULT_STYLE_KEY} = 格式 来修改默认值
*/
String style() default "";
from mapper.
io.mybatis.mapper.example.Example example = new io.mybatis.mapper.example.Example<>();
感谢解答
from mapper.
看代码确认了一下,Example没有带条件的方法,ExampleWrapper有,建议试试Wrapper这种。
最新版本不需要都指定column注解,代码会判断是否排除:
public class DefaultEntityColumnFactory implements EntityColumnFactory { @Override public Optional<List<EntityColumn>> createEntityColumn(EntityTable entityTable, EntityField field, Chain chain) { if (field.isAnnotationPresent(Entity.Column.class)) { //省略 } else if (!field.isAnnotationPresent(Entity.Transient.class)) { //省略 } return Optional.empty(); } }
看了下源码,ExampleWrapper当value为null时会抛出异常
protected void addCriterion(String condition, Object value) {
if (value == null) {
throw new RuntimeException("Value for " + condition + " cannot be null");
} else {
this.criteria.add(new Criterion(condition, value));
}
}
好像是可以把判断条件写在前面,这样也行吧,虽然麻烦点但是更灵活
public ExampleWrapper<T, I> like(boolean useCondition, Fn<T, Object> fn, String value) {
return useCondition ? this.like(fn, value) : this;
}
from mapper.
Related Issues (20)
- LogicalMapper当设置@Entity.Table.schema时生成的sql没有schema.table
- genId 属性不生效 HOT 2
- Fn缓存严重BUG,导致内存无限增长! HOT 3
- 报错java.lang.ClassNotFoundException: jakarta.persistence.Table HOT 3
- 希望增加一些功能的建议,能够在BaseService增加getWrapper方法,以及希望增加连表查询功能 HOT 1
- wrapper的eq方法,当字段上的typeHandler需要传入type的通用typeHandler时,会无法处理,需要Example支持传入javaType
- 动态表名实现覆盖不全 HOT 2
- 关于wrapper()能否加上以下扩展
- LogicalMapper 如何查出被删除的数据 HOT 1
- 自定义主键 HOT 1
- 实体类中某个字段不加注解新增修改时依然会报该字段不存在 HOT 2
- 使用JPA注解时批量插入数据空指针异常 HOT 4
- 关于 this.baseMapper.deleteByPrimaryKey(dto.getResId())的疑问咨询 HOT 2
- 自定义策略自动生成主键能否支持insertList HOT 2
- 是否有方法可以用代码对查询语句加锁 HOT 1
- tk.mybatis 返回null HOT 1
- EntityColumn 检测是否设置了主键策略异常 HOT 1
- 当xml里定义的接口和BaseMapper里的重合,会报错 HOT 1
- 当主键 id 为空字符串时自动生成主键不生效,能否处理下 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mapper.