1、BaseMapper是mybatis-plus提供的,汇聚插入、更新、删除和查询等功能,简化sql代码。
2、ServiceImpl 是IService 的实现类,有两个泛型参数,一个参数为BaseMapper 也就是实体Mapper ,一个是实体类。
3、IService接口中包含的一系列的dao层交互操作,一般在服务层进行继承操作。
4、使用mybatisplus时,报错表和视图不存在,是因为框架直接用的类名到数据库找,如果不一致会报错,所以在entity那用@TableName告诉数据库里该表的名字;
@TableId,设置别名,就是updateById方法里用的id,但代码里实际用的是userId。
@TableName(value = "R$USER")
public class UserTest {
@TableField("USER_ID")
// @TableId使用的主键,就是updateById方法里的id
@TableId(value = "USER_ID", type = IdType.AUTO)
private Long userId;
}
//xxxxx自定义的包名
package cn.com.xxxxx.order.service;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.com.sparknet.entity.UserTest;
import cn.com.sparknet.order.dao.PageSearchDao;
/*
* ServiceImpl是mybatis提供的,在service层使用的。
*/
@Service
public class PageSearchService extends ServiceImpl<PageSearchDao, UserTest>{
// 用mybatis-plus实现新增
public boolean plusSave(UserTest userTest) {
// 方式1,save和updateById都是mybatis-plus提供的方法
// if (userTest.getUserId() == null) {
// return save(userTest);
// }else {
// return updateById(userTest);
// }
// 方式二saveOrUpdate是新增和修改的集合方法,就是方式一合并
return saveOrUpdate(userTest);
}
}
5、mybatisplus查询list()
6、mybatisplus删除removeById()
7、分页模糊查询
mybatis版本号3.3.0
(1)配置分页插件
package cn.com.xxxxx.config;
import java.util.Collections;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
}
(2)Dao
package cn.com.xxxxxx.order.dao;
/*
* 分页查询
*/
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.com.sparknet.entity.UserTest;
// BaseMapper是mybatis-plus提供的,汇聚插入、更新、删除和查询等功能,简化sql代码。
@Mapper
public interface PageSearchDao extends BaseMapper<UserTest> {
}
(3)controlle
// 分页查询
// @RequestParam接收路由上参数/listPage?pageSize=3&pageNum=1&userName=aa
@PostMapping("/listPage")
public Page<UserTest> findList(@RequestParam Integer pageSize, @RequestParam Integer pageNum, @RequestParam String userName) {
Page<UserTest> page = new Page<>(pageNum, pageSize);
QueryWrapper<UserTest> queryWrapper = new QueryWrapper<>();
// 模糊查询的参数
queryWrapper.like("USER_NAME", userName);
return pageSearchService.page(page, queryWrapper);
}
8、导出excel
// 导出接口
@GetMapping("/export")
public void export(HttpServletResponse response) throws Exception {
// (1)获取要导出的数据到list
List<UserTest>list = pageSearchService.list();
// (2)引入导出工具,自定义列别名
ExcelWriter writer = ExcelUtil.getWriter();
writer.addHeaderAlias("userId", "用户Id");
writer.addHeaderAlias("userName", "用户名");
writer.addHeaderAlias("duty", "职务");
writer.addHeaderAlias("tel", "电话");
// 写出文件
writer.write(list, true);
// 设置浏览器响应格式
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文需编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
}
}