点击上方蓝色我们家Java,选择“关注”
Mybatis Genenrator
首先我们在pom.xml文件中引入maven相关依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
再修改一下application.yml文件:
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/Family?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
mybatis:
# 扫描.xml文件的路径
mapper-locations: classpath:generator/*.xml
logging:
level:
com.javafamily.familydemo: debug
package com.javafamily.familydemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = {"com.javafamily.familydemo.generator"})
public class FamilyDemoApplication {
public static void main(String[] args) {
SpringApplication.run(FamilyDemoApplication.class, args);
}
}
xml配置文件方式
编码实现Mybatis Generator代码生成配置方式
IDEA插件实现Mybatis generator代码生成配置方式

点击右侧Database,添加MySQL数据库:

连接数据库:




路径修改完成后,点击ok。如果是第一次使用better-mybatis-generator插件,会要求输入数据库的账号和密码:



PetsService接口中的代码不变,只需要修改PetsServiceImpl.java中的代码:
package com.javafamily.familydemo.service;
import com.javafamily.familydemo.generator.Pets;
import com.javafamily.familydemo.generator.PetsDao;
import com.javafamily.familydemo.model.PetsVO;
import com.javafamily.familydemo.utils.DozerUtils;
import org.springframework.stereotype.Service;
import org.dozer.Mapper;
import javax.annotation.Resource;
import java.util.List;
@Service
public class PetsServiceImpl implements PetsService {
@Resource
protected Mapper dozerMapper;
@Resource
// mybatis generator会自动生成代码
private PetsDao petsDao;
@Override
public void savePets(PetsVO pets) {
Pets petsPO = dozerMapper.map(pets, Pets.class);
petsDao.insert(petsPO);
}
@Override
public void deletePets(long id) {
petsDao.deleteByPrimaryKey(id);
}
@Override
public void updatePets(PetsVO pets) {
Pets petsPO = dozerMapper.map(pets, Pets.class);
petsDao.updateByPrimaryKeySelective(petsPO);
}
@Override
public PetsVO getPets(Long id) {
return dozerMapper.map(petsDao.selectByPrimaryKey(id), PetsVO.class);
}
@Override
public List<PetsVO> getAll() {
List<Pets> pets = petsDao.selectByExample(null);
return DozerUtils.mapList(pets, PetsVO.class);
}
}
执行代码,在postman中进行测试(注:执行代码之前先将上节编写的配置文件注释掉,否则会影响执行)
添加数据:

查询数据:

修改数据:

删除数据:

Mybatis Plus
Mybatis Plus相对于Mybatis Genenrator功能更多、更强大。Mybatis Plus是Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。
首先我们在pom.xml文件中引入maven依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
有了mybatis-plus-boot-starter依赖后就不需要mybatis-spring-boot-starter依赖了。
application.yml文件不需要改动。
在familydemo文件下创建mapper文件夹,并修改FamilyDemoApplication中@MapperScan的扫描路径:
package com.javafamily.familydemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = {"com.javafamily.familydemo.mapper"})
public class FamilyDemoApplication {
public static void main(String[] args) {
SpringApplication.run(FamilyDemoApplication.class, args);
}
}
model文件下的pets:
package com.javafamily.familydemo.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Pets {
private long id;
private String name;
private String varieties;
private Date createTime;
}
在新建的mapper文件下创建petsMapper接口:
package com.javafamily.familydemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.javafamily.familydemo.model.Pets;
public interface PetsMapper extends BaseMapper<Pets> {
}
BaseMapper中提供了若干关于增删改查的实现代码。继承BaseMapper之后就可以直接使用这些方法来操控表。
实现增删改查
再次改写PetsServiceImpl.java:
package com.javafamily.familydemo.service;
import com.javafamily.familydemo.mapper.PetsMapper;
import com.javafamily.familydemo.model.Pets;
import com.javafamily.familydemo.utils.DozerUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.dozer.Mapper;
import java.util.List;
@Service
public class PetsServiceImpl implements PetsService {
@Resource
protected Mapper dozerMapper;
@Resource
private PetsMapper petsMapper;
@Override
public void savePets(Pets pets) {
Pets petsPO = dozerMapper.map(pets, Pets.class);
petsMapper.insert(petsPO);
}
@Override
public void deletePets(long id) {
petsMapper.deleteById(id);
}
@Override
public void updatePets(Pets pets) {
Pets petsPO = dozerMapper.map(pets, Pets.class);
petsMapper.updateById(petsPO);
}
@Override
public Pets getPets(Long id) {
return dozerMapper.map(petsMapper.selectById(id), Pets.class);
}
@Override
public List<Pets> getAll() {
List<Pets> pets = petsMapper.selectList(null);
return DozerUtils.mapList(pets, Pets.class);
}
}
执行代码,使用postman进行测试,增删改查功能全部正常。
注意事项




