🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Query使用方式和风格介绍 我们以一个 User表为例,查询模糊查询用户名包含 "t" ,并且delete_time 不为空的数据库,按照id 倒序。 ```java //JDK8 强烈推荐使用!! LambdaQuery<User> query = sqlManager.lambdaQuery(User.class); query.andLike(User::getName,"%t%") .andIsNotNull(User::getDeleteTime) .desc(User::getId).select(); //通用方式,可能会逐渐抛弃 Query<User> query = sqlManager.query(User.class); List<User> list = query.andLike("name", "%t%") .andIsNotNull("delete_time") .orderBy("id desc").select(); ``` 如果你使用的是Spring框架,并且直接在程序里面注入了`UserDao`可以更加方便的使用。 ```java //定义好的UserDao类 public interface UserDao extends BaseMapper<User> { } //注入对象 @Autowired private UserDao userDao; //代码中直接使用userDao查询 userDao.createLambdaQuery() .andLike(User::getName,"%t%") .andIsNotNull(User::getDeleteTime) .desc(User::getId).select(); ``` 从上面的例子可以看出,Query是使用链式调用,看起来就像一个完整的sql一般,使用方式遵从用户平时SQL编写习惯,所以用户在使用过程中需遵循SQL格式。 所有的条件列完之后,再调用select(要执行的方法:select,insert,update,count 等等); 这里有的同学可以看出来,直接使用数据库字段,这样不妥啊!要是重构怎么办。虽然大部分时候建立的数据库字段不会重命名,BeetlSql 还是支持列名重构,代码如下: ``` List<User> list1 = sql.lambdaQuery(User.class) .andEq(User::getName, "hi") .orderBy(User::getCreateDate) .select(); ``` 使用LamdbaQuery 必须使用Java8及以上版本。 为了方便,下面的例子都采用数据库字段的形式进行,示例数据库为MySql; > Query包含了条件部分和执行部分,条件部分是andEq等方法,执行部分比如是select等方法。Query类在每次执行后,都会清空条件部分,因此可以复用Query类。考虑到每个query有不同含义,最好是新创建,比如 Query userQuery ; Query vipUserQuery;