SpringBoot-Mybatis代码生成

qshy
发布于 2022-4-25 21:48
浏览
0收藏

作者 | springboot葵花宝典
来源 | 今日头条

什么是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**官方网址,安装步骤如下:SpringBoot-Mybatis代码生成-鸿蒙开发者社区

使用better-mybatis-generator生成Mybatis代码过程

在Idea的DataBase中配置相对于的mysql链接步骤如下:SpringBoot-Mybatis代码生成-鸿蒙开发者社区

选择相对应的表进行代码生成,具体步骤如下图:

SpringBoot-Mybatis代码生成-鸿蒙开发者社区

 

SpringBoot-Mybatis代码生成-鸿蒙开发者社区

添加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测试接口方法如下图:

SpringBoot-Mybatis代码生成-鸿蒙开发者社区

 

收藏
回复
举报
回复
    相关推荐