您当前的位置: 首页 >  mybatis

彭世瑜

暂无认证

  • 1浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

使用mybatis-generator-plugin自动生成代码整合SpringBoot+MyBatis

彭世瑜 发布时间:2020-07-26 16:19:25 ,浏览量:1

文章目录
    • 1、创建SpringBoot工程
    • 2、项目结构
    • 3、配置文件
    • 4、执行代码生成
    • 5、Service和Controller
    • 6、运行启动

1、创建SpringBoot工程

本示例项目代码下载地址: https://download.csdn.net/download/mouday/12662948

使用Spring Initializer创建SpringBoot工程,只用如下依赖

Web
MySQL
MyBatis
2、项目结构

在这里插入图片描述

$ tree
.
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── mouday
        │           └── demo
        │               ├── Application.java
        │               ├── controller
        │               │   └── PersonController.java
        │               ├── mapper
        │               │   ├── PersonMapper.java
        │               │   └── PersonMapper.xml
        │               ├── pojo
        │               │   └── Person.java
        │               └── service
        │                   ├── PersonService.java
        │                   └── impl
        │                       └── PersonServiceImpl.java
        └── resources
            ├── application.yml
            ├── generator
            │   └── generatorConfig.xml
            ├── sql
            │   └── person.sql
            ├── static
            └── templates
3、配置文件

3个配置文件和1个建表语句文件

pom.xml               # 项目依赖 
application.yml       # 项目配置 
generatorConfig.xml   # 自动代码生成配置 
person.sql            # 建表语句

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.2.RELEASE
         
    

    com.mouday
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.3
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        

        
        
            mysql
            mysql-connector-java
            runtime
        

        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.1
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

    

    
        
            
            
                src/main/java
                
                    **/*.xml
                
                true
            
        

        
            
                org.springframework.boot
                spring-boot-maven-plugin
            

            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5
                
                    ${basedir}/src/main/resources/generator/generatorConfig.xml
                    true
                    true
                
                
                
                    
                        mysql
                        mysql-connector-java
                        8.0.20
                    
                    
                        org.mybatis.generator
                        mybatis-generator-core
                        1.3.5
                    
                
            
        
    



application.yml

# 设置端口
server:
  port: 8080

# 设置数据源
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/data
    username: root
    password: 123456
    # 连接池类型
    type: com.alibaba.druid.pool.DruidDataSource
    # 驱动
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 连接池配置
    druid:
      # 最小数
      min-idle: 5
      # 最大数
      max-active: 20
      # 初始大小
      initial-size: 5
      # 配置获取连接等待超时时间
      max-wait: 6000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存时间  单位为毫秒
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开 PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,wall用于防火墙
      filters: stat,wall

# 配置mybatis
mybatis:
#  mapper-locations: classpath:mappers/*.xml
  # 全局的映射,不用在xml文件写实体类的全路径
#  type-aliases-package: com.mouday.demo.pojo
  configuration:
    # 开启驼峰映射
    map-underscore-to-camel-case: true

generatorConfig.xml






    

        
        
            
            
        

        
        
        

        
        
            
            
        

        
        
            
            

            
            
        

        
        
            
        

        
        
            
        

        
        
        

    



person.sql

CREATE TABLE `person` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
)
4、执行代码生成
$ mvn mybatis-generator:generate

生成3个文件

Person.java                       # model
PersonMapper.java                 # mapper接口
PersonMapper.xml                  # sql映射

Person.java

package com.mouday.demo.pojo;

public class Person {
    private Integer id;

    private String name;

    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

PersonMapper.java

package com.mouday.demo.mapper;

import com.mouday.demo.pojo.Person;

public interface PersonMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Person record);

    int insertSelective(Person record);

    Person selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Person record);

    int updateByPrimaryKey(Person record);
}

PersonMapper.xml





  
    
    
    
  

  
    id, name, age
  
  
    select 
    
    from person
    where id = #{id,jdbcType=INTEGER}
  
  
    delete from person
    where id = #{id,jdbcType=INTEGER}
  
  
    insert into person (id, name, age
      )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}
      )
  
  
    insert into person
    
      
        id,
      
      
        name,
      
      
        age,
      
    
    
      
        #{id,jdbcType=INTEGER},
      
      
        #{name,jdbcType=VARCHAR},
      
      
        #{age,jdbcType=INTEGER},
      
    
  
  
    update person
    
      
        name = #{name,jdbcType=VARCHAR},
      
      
        age = #{age,jdbcType=INTEGER},
      
    
    where id = #{id,jdbcType=INTEGER}
  
  
    update person
    set name = #{name,jdbcType=VARCHAR},
      age = #{age,jdbcType=INTEGER}
    where id = #{id,jdbcType=INTEGER}
  

5、Service和Controller

对外服务接口

PersonService.java       # 接口
PersonServiceImpl.java   # 实现
PersonController.java    # 控制器

PersonService.java

package com.mouday.demo.service;

import com.mouday.demo.pojo.Person;

public interface PersonService {
    int deleteByPrimaryKey(Integer id);

    int insert(Person record);

    int insertSelective(Person record);

    Person selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Person record);

    int updateByPrimaryKey(Person record);
}

PersonServiceImpl.java

package com.mouday.demo.service.impl;

import com.mouday.demo.mapper.PersonMapper;
import com.mouday.demo.pojo.Person;
import com.mouday.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PersonServiceImpl implements PersonService {

    @Autowired
    private PersonMapper personMapper;

    @Override
    public int deleteByPrimaryKey(Integer id) {
        return personMapper.deleteByPrimaryKey(id);
    }

    @Override
    public int insert(Person record) {
        return personMapper.insert(record);
    }

    @Override
    public int insertSelective(Person record) {
        return personMapper.insertSelective(record);
    }

    @Override
    public Person selectByPrimaryKey(Integer id) {
        return personMapper.selectByPrimaryKey(id);
    }

    @Override
    public int updateByPrimaryKeySelective(Person record) {
        return personMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public int updateByPrimaryKey(Person record) {
        return personMapper.updateByPrimaryKey(record);
    }
}

PersonController.java

package com.mouday.demo.controller;

import com.mouday.demo.pojo.Person;
import com.mouday.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/person")
public class PersonController {
    @Autowired
    private PersonService personService;


    @GetMapping("/selectByPrimaryKey")
    public Person selectByPrimaryKey(Integer id){
        return personService.selectByPrimaryKey(id);
    }

}

6、运行启动
package com.mouday.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@SpringBootApplication
@MapperScan("com.mouday.demo.mapper") // 指定mapper扫描包
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @GetMapping("/")
    public String index(){
        return "hello";
    }

}

请求和返回结果

GET http://localhost:8080/person/selectByPrimaryKey?id=1

{
	id: 1,
	name: "刘禅",
	age: 26
}

参考 SpringBoot集成MyBatis及使用mybatis-generator-plugin生成代码(完美,步骤巨详细)

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.1759s