Ebean or 语法

原生SQL语句使用or的时候我们通常会这么写:
在这里插入图片描述
那么使用Ebean的时候我们应该怎么操作呢?
这里就要使用Ebean的Expression表达式了,先了解下,我们使用Ebean点出or看方法提示(快捷键Ctrl+P):
在这里插入图片描述
可以看出or这个方法的参数其实就是两个Expression表达式,这个表达式怎么用呢?

先说两个条件的or,查找用户的userName中包含zhang或者包含li的用户:

在这里插入图片描述
其实就是定义两个Expression表达式,第一个表达式说用户的userName中包含zhang,第二个表达式说用户的userName包含li,然后把这两个条件or一下,就得到我们想要的数据了。

两个以上条件的or

这里先说Ebean是怎么处理多个条件的or的,给大家看个原生的sql语句:

第一种写法:
where user_name like '%zhang%' or user_name like '%li%' or user_name like '%wang%' or user_name like '%fang%'
第二种写法:
where (((user_name like '%zhang%' or user_name like '%li%') or user_name like '%wang%') or user_name like '%fang%')

这两个where条件语句大家应该都看得懂,其实是等价的,都能查出我们想要的数据,而Ebean就是按照第二种写法处理多条件or的,我们看看要怎么写:
假设我们有无线多个条件需要or,那么我们就先把前两个条件or,然后把结果括起来,和下一个条件or,再把结果括起来,然后再和下一个条件or,再把结果括起来,以此类推(没什么不好懂得,看看上面第二种sql写法就懂了)
上代码:
在这里插入图片描述

代码中的Expression和Expr都是Ebean用来定义表达式的,写法就是这样。

public static void main(String[] args) {
		//手动强行制造or的条件(查出用户表中userName包含下面list中任意一个项的所有用户)
		List<String> likeOption = new ArrayList<>();
		likeOption.add("Le");
		likeOption.add("Bao");
		likeOption.add("Chen");
		likeOption.add("Li");
		likeOption.add("Chao");
		ExpressionList<User> where = Ebean.find(User.class).where();

		//先把前两个条件写入表达式
		Expression orOption1 = Expr.like("userName", "%" + likeOption.get(0) + "%");
		Expression orOprion2 = Expr.like("userName", "%" + likeOption.get(1) + "%");

		//先把前两个条件or一下
		Expression orOption = Expr.or(orOption1, orOprion2);
		//其实这个地方如果是工作中用的话要判断有几个条件,大于两个条件的才有下面的这个for循环
		//看清楚i是从2开始的
		for (int i = 2; i < likeOption.size(); i++) {
			//后面依次把循环到的条件,和前面所有条件or的结果,or一下(断下句,方便理解)
			orOption=Expr.or(orOption,Expr.like("userName","%"+likeOption.get(i)+"%"));
		}
		//最后把所有条件or的结果add到where表达式中
		List<User> list = where.add(orOption).findList();

		for (User u : list) {
			System.out.println("---------------------"+u.getUserName());
		}

执行后控制台打印出SQL语句:
在这里插入图片描述
可以看到,正如前面所说的,Ebean是先把前两个条件or了一下,然后括起来和下一个or,再把括起来,再和下一个条件or,以此类推。

我不禁又想起了从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚对小和尚说。。。。。。。。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个快速开发的框架,而Ebean是一个轻量级的ORM框架。这两个框架的结合可以帮助我们快速开发Web应用程序。 以下是在Spring Boot中使用Ebean的步骤: 1.添加Ebean依赖。在pom.xml中添加以下依赖。 ``` <dependency> <groupId>io.ebean</groupId> <artifactId>ebean</artifactId> <version>11.35.2</version> </dependency> ``` 2.配置application.properties文件。在该文件中添加以下配置。 ``` ebean.datasource.db.username=username ebean.datasource.db.password=password ebean.datasource.db.databaseUrl=jdbc:mysql://localhost:3306/test ebean.server=default ``` 3.创建实体类。使用Ebean的注解来标记实体类中的属性和关系。 ``` @Entity @Table(name = "user") public class User extends BaseModel { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private Integer age; @ManyToOne(optional = false) private Department department; // getter and setter methods } ``` 4.创建数据访问层接口和实现类。使用Ebean的API来访问数据库。 ``` public interface UserDao { List<User> findAll(); User findById(Long id); void save(User user); void update(User user); void delete(User user); } @Service public class UserDaoImpl implements UserDao { @Override public List<User> findAll() { return Ebean.find(User.class).findList(); } @Override public User findById(Long id) { return Ebean.find(User.class, id); } @Override public void save(User user) { Ebean.save(user); } @Override public void update(User user) { Ebean.update(user); } @Override public void delete(User user) { Ebean.delete(user); } } ``` 5.创建控制器类。在该类中调用数据访问层接口中的方法来操作数据库。 ``` @RestController @RequestMapping("/user") public class UserController { @Autowired private UserDao userDao; @GetMapping public List<User> findAll() { return userDao.findAll(); } @GetMapping("/{id}") public User findById(@PathVariable Long id) { return userDao.findById(id); } @PostMapping public void save(@RequestBody User user) { userDao.save(user); } @PutMapping public void update(@RequestBody User user) { userDao.update(user); } @DeleteMapping public void delete(@RequestBody User user) { userDao.delete(user); } } ``` 以上就是在Spring Boot中使用Ebean的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值