Mybaits Plus — 从基础到代码生成器
mybatis plus 基础(基于springboot开发)
-
创建springboot项目
- 使用idea工具,创建springboot项目
-
引入相关jar包
-
<!--mybatis plus相关模对springboot存在版本兼容问题--> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.12.RELEASE</spring-boot.version> </properties> <dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
-
-
配置文件编写
-
spring: application: datasource: username: root password: 411624 url: jdbc:mysql://127.0.0.1:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
-
编写Java代码
-
根据数据库创建实体类
-
//此实体类使用easycode插件生成,也可自己编辑 @Data @AllArgsConstructor public class Users implements Serializable { private static final long serialVersionUID = -47506291282324270L; /** * 主键ID */ private Long id; /** * 姓名 */ private String uname; /** * 年龄 */ private Integer age; /** * 邮箱 */ private String email; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
-
-
mapper接口继承baomodou包下的BaseMapper接口
-
public interface UsersMapper extends BaseMapper<Users> { }
-
-
在service包下创建service以及其实现类
-
service接口
-
public interface IUserService extends IService<Users> { }
-
-
实现类
-
@Service public class UserServiceImpl extends ServiceImpl<UsersMapper,Users> implements IService<Users> { }
-
-
-
在启动类上添加@MapperScan注解
-
@MapperScan("com.example.demo.mapper")
-
-
-
测试
-
在Test文件夹下按照相关要求创建测试类
-
@SpringBootTest public class MapperTest { @Autowired private UsersMapper usersMapper; @Test public void test01() { List<Users> list = usersMapper.selectList(null); list.forEach(System.out :: println); } }
-
@SpringBootTest public class ServiceTest { @Autowired private UserServiceImpl userServiceImpl; @Test public void test01() { List<Users> list = new ArrayList<>(); for (int i = 2; i < 8;i++) { Users user = new Users( (long) i, "lpl", 30 + i, "2" + i + "@qq.com" ); list.add(user); } boolean b = userServiceImpl.saveBatch(list); System.out.println(b); } }
-
mybaits plus 条件构造器
种类
QueryWrapper
UpdateWrapper
LambdaQueryWrapper
LambdaUpdateWrapper
相关使用
@SpringBootTest
public class ConsturctorTest {
@Autowired
private UsersMapper usersMapper;
@Test
public void test01() {
QueryWrapper<Users> q = new QueryWrapper<>();
q.like("age",2);
List<Users> list = usersMapper.selectList(q);
System.out.println(list);
}
@Autowired
private UserServiceImpl serviceImpl;
@Test
public void test02() {
UpdateWrapper<Users> usersMap = new UpdateWrapper<>();
usersMap.eq("age",21).set("uname","hs");
System.out.println(serviceImpl.update(usersMap));
}
}
代码生成器
-
额外引入jar包
-
<!--代码生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency> <!--模板引擎依赖--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
-
-
编写代码
-
@SpringBootTest public class GoCode { @Test public void getCode() { // 1、创建代码生成器 AutoGenerator mpg = new AutoGenerator(); // 2、全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("Nero"); gc.setOpen(false); //生成后是否打开资源管理器 gc.setServiceName("%sService"); //去掉Service接口的首字母I gc.setIdType(IdType.AUTO); //主键策略 gc.setSwagger2(true);//开启Swagger2模式 mpg.setGlobalConfig(gc); // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("411624"); dsc.setDbType(DbType.MYSQL); mpg.setDataSource(dsc); // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.example.demo"); pc.setEntity("pojo"); //此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。 mpg.setPackageInfo(pc); // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略 strategy.setEntityLombokModel(true); // lombok strategy.setLogicDeleteFieldName("is_deleted");//逻辑删除字段名 strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去掉布尔值的is_前缀(确保tinyint(1)) strategy.setRestControllerStyle(true); //restful api风格控制器 mpg.setStrategy(strategy); // 6、执行 mpg.execute(); } }
-