做电脑系统的网站,网站开发的一般流程是什么,做搜狗手机网站排名软,云南网是什么网站1、实现连表查询
正常来说单靠mybatisplus无法实现连表查询#xff0c;只能靠单表sql然后进行拼接形成连表查询#xff0c;或者使用xml文件去编写sql语句来实现连表查询。但他又给我们提供了一个插件MyBatis-Plus-Join#xff0c;用来弥补mybatisplus再连表上的不足#…1、实现连表查询
正常来说单靠mybatisplus无法实现连表查询只能靠单表sql然后进行拼接形成连表查询或者使用xml文件去编写sql语句来实现连表查询。但他又给我们提供了一个插件MyBatis-Plus-Join用来弥补mybatisplus再连表上的不足写法和之前的用法没有太多差别。 我们要使用这个工具首先要引入他的依赖 dependencygroupIdcom.github.yulichang/groupIdartifactIdmybatis-plus-join-boot-starter/artifactIdversion1.4.4.1/version/dependency 和普通的mybatisplus不同他的mapper层继承的不是BaseMapper接口而是MPJBaseMapper接口。 在server层的编写就是
这个方法中一共涉及到两个表user表和user_role表然后就是查询出roleId为1的用户信息。
user表: user_role表 :
Overridepublic PageUserPo selectByRoleName(Integer pageNum, Integer pageSize) {PageUserPo userPoPage userMapper.selectJoinPage(new Page(pageNum, pageSize, true), UserPo.class, new MPJLambdaWrapperUserPo().selectAll(UserPo.class).innerJoin(UserRolePo.class, UserRolePo::getUserId, UserPo::getUserId).eq(UserRolePo::getRoleId, role.getRoleId()));return userPoPage;}
再这个里面我使用了分页查询可以看出和以前用mybatisplus的分页查询没有什么区别。
执行的SQL语句 具体关于MyBatis-Plus-Join这个插件的使用大家可以去官网看看里面的使用方法介绍一目了然还有样例使用 MyBatis-Plus-Join
2、实现批量操作 实现批量操作的话使用的是IService 类提供的 saveBatch 方法来实现批量数据的插入功能想要使用这个方法和平常我们继承的东西不同。当然用这个接口里的方法不是真正的批量操作实际上还是进行的一条一条sql的操作比起真正的批量操作还是效率低一些。
Mapper层
我们先创建一个Mapper窗口继承BaseMapper接口。 Server层
接口要实现IService接口然后实现类要继承ServiceImpl类和实现所对应的接口 这两三个地方都弄好之后我们就可以再Service实现类SignInServerImpl 中进行业务的编写了。 Service
public class SignInServerImpl extends ServiceImplSignInMapper, SignInPoimplements ISignInServer {/*** 往签到表里插入这个班里所有的学生* param listSignPo* return {link Boolean}*/Overridepublic Boolean insertAllClassmate(ListSignPo listSignPo) {return this.saveBatch(listSignPo);}/*** 批量修改签到表里这个课的学生的签到状态和结束这个课* param listSignPo* return {link Boolean}*/Overridepublic Boolean signInOne(ListSignInDto signInDtos) {ListSignInPo list new LinkedList();for (int i 0; i signInDtos.size(); i) {SignInPo signInPo new SignInPo();signInPo.setId(signInDtos.get(i).getSignId());signInPo.setIsSignIn(signInDtos.get(i).getIsSigIn());signInPo.setIsClassing(0);list.add(signInPo);}return this.updateBatchById(list);}
} 这是执行所打印的sql可以看出执行的并不是批量插入的sql语句。而是一条一条的往外差人