SpringBoot-20-Mybatis代码生成
什么是Mybatis?
mybatis是apache的一个开源项目ibatis
,2010年正式改名为mybatis
。他是一个Java的持久层框架,ibatis
提供的持久层框架包含 SqL Maps和Data Access Objects(Daos)
Mybatis特点:
Mybatis简单易学:可以通过官方文档,快速掌握和实现开发
支持动态sql编写
降低sql和代码的高耦合性,将业务层和数据访问层分开
但是在操作Mybatis的时候会有很多重复性操作,为了使得我们减少设置mybatis中的配置文件以及表交互的麻烦,出现了一些mybatis代码生成方案:
- Mybatis Generator
- Mybtis Plus
我们这次介绍Mybatis Generator对Mybatis进行增强和Mybatis的数据操作。
Mybatis Generator实现
Mybatis Generator有多种实现方式xml配置实现方式,代码配置方式以及通过插件方式实现,今天我们就介绍一个最简单的Idea插件方式实现Mybatis Generator,better-mybatis-generator是一个可以根据表进行自动生成mybatis相关的代码,(包括:dao、example、domain、xml)相关插件better-mybatis-generator**官方网址,安装步骤如下:
使用better-mybatis-generator生成Mybatis代码过程
- 在Idea的DataBase中配置相对于的mysql链接步骤如下:
- 选择相对应的表进行代码生成,具体步骤如下图:
添加Mybatis的相关依赖
创建项目以后我们要在pom.xml
中添加mybatis和mysql驱动,初学者可以查看SpringBoot项目创建学校如何创建项目。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>
添加Mybatis相关配置
我们需要在application.yml
配置数据库链接,以及Mybatis中xml文件存放位置。
server: port: 8899 spring: datasource: url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml logging: level: com.learn.springboot: debug
配置Mybatis中mapper的包扫描位置
配置包扫描路径有两种方式(两者配置方法选一个):
- 在Main入口配置
@MapperScan(basePackages = {"com.learn.springboot.mapper"}) @SpringBootApplication public class SpringBootPart18Application { public static void main(String[] args) { SpringApplication.run(SpringBootPart18Application.class, args); } }
- 添加Config配置类(个人推荐使用,为以后配置mybatis分页,多数据源等作准备)
@Configuration @MapperScan(basePackages = {"com.learn.springboot.mapper"}) public class MybatisConfig { }
Service层的实现
- Service接口层的实现,代码如下:
public interface StudentService { void saveStudent(Student student); void deleteStudent(Long id); void updateStudent(Student student); Student getStudent(Long id); List<Student> getAll(); }
- Service层接口的实现代码如下:
@Service public class StudentServiceImpl implements StudentService { /** * mapper注入 */ @Autowired private StudentDaoMapper studentDaoMapper; /** * 添加学生 * @param student */ @Override public void saveStudent(Student student) { //代码自动生成 studentDaoMapper.insert(student); } /** * 根据ID删除学生 * @param id */ @Override public void deleteStudent(Long id) { //代码自动生成 studentDaoMapper.deleteByPrimaryKey(id); } /** * 更新学生 * @param student */ @Override public void updateStudent(Student student) { //代码自动生成 studentDaoMapper.updateByPrimaryKeySelective(student); } /** * 根据ID查询学生 * @param id * @return */ @Override public Student getStudent(Long id) { //代码自动生成 return studentDaoMapper.selectByPrimaryKey(id); } /** * 获取所有数据 * @return */ @Override public List<Student> getAll() { //代码自动生成 return studentDaoMapper.selectByExample(null); } }
Controller层的实现
@Slf4j @RestController @RequestMapping("/student") public class StudentController { @Autowired private StudentService studentService; @PostMapping("create") public void saveStudent(@RequestBody Student student) { studentService.saveStudent(student); } @GetMapping("/delete/{id}") public void deleteStudent(@PathVariable("id") Long id) { studentService.deleteStudent(id); } @PostMapping("update") public void updateStudent(@RequestBody Student student) { studentService.updateStudent(student); } @GetMapping("/select/{id}") public Student getStudent(@PathVariable("id") Long id) { return studentService.getStudent(id); } @GetMapping("/selectall") public List<Student> getAll() { return studentService.getAll(); } }
测试
使用postman测试一下分别测试一下接口:
http://localhost:8899/student/selectall GET方法
http://localhost:8899/student/select/11 GET方法
http://localhost:8899/student/update POST方法
http://localhost:8899/student/delete/11 GET方法
http://localhost:8899/student/create POST方法
postman测试接口方法如下图:
如果您觉得本文不错,欢迎关注支持,您的关注是我坚持的动力!