SpringBoot-20-Mybatis代码生成

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**官方网址,安装步骤如下:

SpringBoot-20-Mybatis代码生成

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

  • 在Idea的DataBase中配置相对于的mysql链接步骤如下:

SpringBoot-20-Mybatis代码生成

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

SpringBoot-20-Mybatis代码生成

SpringBoot-20-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.classargs);
    }

}
  • 添加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-20-Mybatis代码生成

如果您觉得本文不错,欢迎关注支持,您的关注是我坚持的动力!


原创不易,转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!

原文始发于微信公众号(springboot葵花宝典):SpringBoot-20-Mybatis代码生成

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/184386.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!