一: 简单demo
第一步:打开Mybatis-Plus官网:mybatis-plus官网,点击快速开始选择springboot版本,于是我们就愉快地开始了。
官网pom文件:
官网yml文件配置:
那就是搞定这两个,我们就等于搞定了mybatis-plus入门了。
第二部:建立demo
- 首先得有数据库还有数据
数据库:这是我的库,我的表,还有我的数据
- 引入依赖,项目是springboot项目,所以我们需要的依赖有:spring-boot-starter;mysql-connect;mybatis-plus-spring-boot-starter,好了就这三个
//springboot启动
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
//数据库连接
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
//不想写getter,setter
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
//mybatis-plus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
//测试用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 写接口并配置
根据官网来看,我们一个bean,一个接口,再来一个配置就收工
demo包结构:
pojo:
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
接口:
//加注解目的在于测试的时候消除报警,不加注解也没事
@Repository
public interface UserMapper extends BaseMapper<User> {
}
配置:我们从官网给的配置来看,我们需要的配置datasource配置(四件套),mapper的位置,entity的位置。于是乎,
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
password: root
username: root
url: jdbc:mysql://127.0.0.1:3306/mybatisplus
//申明实体类的位置,不配置也可以
mybatis-plus:
typeAliasesPackage: com.lll.mybatisplusdemo.pojo
这上面还差一个mapper位置,于是乎
@SpringBootApplication
//mapper包位置
@MapperScan("com.lll.mybatisplusdemo.mapper")
public class MybatisplusDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisplusDemoApplication.class, args);
}
}
写个测试类收工:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisplusDemoApplicationTests {
@Autowired
UserMapper userMapper;
@Test
public void text() {
List<User> users = userMapper.selectList(null);
users.forEach((user)->{System.out.println(user);});
}
}
二:mybatis-plus的核心功能
我们从官网一看,核心功能有五:curd接口就没啥好说了,用的时候研究一下,主要还是看一下代码生成器,条件构造器和分页插件吧。
2.1 代码生成器
这东西说直白的就是根据我们提供的数据库名和表名使用 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码。
public class CodeGenerator {
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
//获得当前目录的根目录地址
String projectPath = System.getProperty("user.dir");
//输出地址,值为项目java包的地址
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("lll"); //作者
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatisplus");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("模块名"));
//父包名
pc.setParent("com.lll.mybatisplusdemo");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 需要生成的表
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
mpg.setStrategy(strategy);
mpg.execute();
}
}
结合官网文档试验了一下,拿出一个较为简单的案例,可以直接用,需要修改的地方。
pc.setParent("com.lll.mybatisplusdemo");
//还有就是数据库的用户名和密码了
2.2 条件构造器
如果说有用过器通用mapper的话,官网一看,我靠,一家子的,都是建立一个容器,给容器添加条件,最后运行容器去查询
基于前面demo的查询:
@Test
public void test(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name","jack");
List<User> users = userMapper.selectList(wrapper);
System.out.println(users);
}
这是一个简答的例子,剩余的也差不多,官网明明白白,有需要去看看,你这么多
三:分页插件
第一步:将bean添加到容器中,方法卸载启动类下
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
第二步:调用page对象
public void test3(){
Page<User> page = new Page<>();
page.setSize(2);
page.setCurrent(0);
IPage<User> userIPage = this.userMapper.selectPage(page, null);
//总页数
long pages = userIPage.getPages();
//总数据条数
long total = userIPage.getTotal();
//当前页数
long current = userIPage.getCurrent();
//每页数据量
long size = userIPage.getSize();
List<User> records = userIPage.getRecords();
records.forEach((user)->{System.out.println(user);});
}