网站开发费入什么科目,视频点播服务器,宿城网站建设,2021年4月重大新闻事件摘抄开启事务
导入Mybatis-Plus框架后#xff0c;我们可以使用Mybatis-Plus自带的事务#xff0c;只需要在配置文件中配置即可
使用配置方式开启日志#xff0c;设置日志输出方式为标准输出mybatis-plus:global-config:db-config:table-prefix: tb_id-type: autoconfiguration:…开启事务
导入Mybatis-Plus框架后我们可以使用Mybatis-Plus自带的事务只需要在配置文件中配置即可
使用配置方式开启日志设置日志输出方式为标准输出mybatis-plus:global-config:db-config:table-prefix: tb_id-type: autoconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl只有最后一行有用数据层开发-分页功能
分页操作需要设定分页对象IPage,Page第一个参数当前页码值第二个是每一页中条数Testvoid testPage(){IPage page new Page(2,2);bookDao.selectPage(page,null);System.out.println(page.getRecords());}IPage对象中封装了分页操作中的所有数据数据当前页码值每页数据总量最大页码值数据总量这样就直接实现分页了吗 答案是否定的 分页操作是在MyBatisPlus的常规操作基础上增强得到内部是动态的拼写SQL语句
因此需要增强对应的功能使用MyBatisPlus拦截器实现import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class MyConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor mybatisPlusInterceptor new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}
}执行测试代码Testvoid testPage(){IPage page new Page(1,2);bookDao.selectPage(page,null);System.out.println(page.getRecords());}可以看出执行了两次查询第一次执行的查询获取了总条数为下面的分页做准备
数据层开发-条件查询功能
上面的分页查询中 bookDao.selectPage(page,null);
第二个参数赋成null你可能好奇它的功能是什么那里是用来放条件对象QueryWrapper的。QueryWrapper解析 QueryWrapper 是 MyBatis-Plus 的一个核心功能它是用来构造 SQL 查询语句的。MyBatis-Plus 是一款 MyBatis 的增强工具在 MyBatis 的基础上只做增强不做改变为简化开发、提高效率而生。 QueryWrapper 主要提供了以下几个功能 链式调用: QueryWrapper 支持链式调用使得代码更加简洁易读。 条件构造器: QueryWrapper 提供了丰富的条件构造方法如 eq (等于)、ne (不等于)、gt (大于)、ge (大于等于)、lt (小于)、le (小于等于) 等。 SQL函数支持: QueryWrapper 支持 SQL 函数比如 count、sum、avg 等。 子查询支持: QueryWrapper 支持子查询可以在查询条件中嵌套子查询。 排序支持: QueryWrapper 支持 orderBy 方法进行排序。 下面是一个事例QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.eq(name, 张三).ne(age, 20).like(email, test).orderByAsc(age);
等价于SQL语句SELECT * FROM user WHERE name 张三 AND age ! 20 AND email LIKE %test% ORDER BY age ASC;了解完基础知识点下面是实际使用Testvoid testGetBy(){QueryWrapperBook queryWrapper new QueryWrapper();queryWrapper.like(name,Spring);List list bookDao.selectList(queryWrapper);}执行结果缺点有的时候我们可能会打错比如将name打成了nmae有没有什么可以解决呢有LambdaQueryWrapper。LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询条件构造器它是 QueryWrapper 的一个变种主要使用 Java 8 的 Lambda 表达式语法。 LambdaQueryWrapper 提供了与 QueryWrapper 类似的功能包括链式调用、条件构造器、SQL函数支持、子查询支持、排序支持等。 相比于 QueryWrapperLambdaQueryWrapper 的主要优点在于 类型安全LambdaQueryWrapper 使用了 Java 8 的 Lambda 表达式使得其具有类型安全的特性。你可以在编译时检查到类型错误而 QueryWrapper 在编译时无法检查到类型错误只能在运行时通过抛出异常来发现错误。 代码可读性更强由于使用了 Lambda 表达式LambdaQueryWrapper 的代码可读性更强。你可以直接看到正在操作的是哪个字段而不需要通过字符串来指定字段名这样也避免了因为字段名拼写错误导致的问题。 例如我们可以使用 LambdaQueryWrapper 构造如下的查询语句LambdaQueryWrapperUser lambdaQuery new QueryWrapperUser().lambda();
lambdaQuery.eq(User::getName, 张三).ne(User::getAge, 20).like(User::getEmail, test).orderByAsc(User::getAge);
等价于SQL语句SELECT * FROM user WHERE name 张三 AND age ! 20 AND email LIKE %test% ORDER BY age ASC;User::getName 表示字段名是 name,其他的类推这样我们就不会因为因为不小心而出错了。
实战如下Testvoid testGetBy2(){LambdaQueryWrapperBook queryWrapper new LambdaQueryWrapper();queryWrapper.like(Book::getName,Spring);List list bookDao.selectList(queryWrapper);}执行结果如下仅学习记录如有错误欢迎指正~