SpringBoot如何通过yml方式整合Mybatis

  本来打算写个使用Sharding-JDBC的例程,但是在搭建Mybatis的过程中,一波三折,因为好久没搭建项目了,另外加上换了电脑。所以很破折,在这里记录一下Spring Boot整合Mybatis吧。可能很简单,但是我长时间没用忘记了,我这里备忘一下吧。

一、项目目录结构

  注意这里Application文件的位置,它是与controller、entity、mapper、service等包处于并列的关系。

SpringBoot如何通过yml方式整合Mybatis_第1张图片

二、数据库文件

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_user_00
-- ----------------------------
DROP TABLE IF EXISTS `t_user_00`;
CREATE TABLE `t_user_00` (
 `id` int(0) NOT NULL AUTO_INCREMENT,
 `user_id` int(0) NOT NULL,
 `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
 `age` int(0) NOT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

三、pom.xml



  4.0.0
  
    org.springframework.boot
    spring-boot-starter-parent
    2.1.13.RELEASE
     
  
  com.gougou
  shardingjdbc-shardingtable-demo
  0.0.1-SNAPSHOT
  shardingjdbc-shardingtable-demo
  shardingjdbc-shardingtable-demo

  
    UTF-8
    1.8
  

  
    
      org.springframework.boot
      spring-boot-starter-web
    
    
      org.projectlombok
      lombok
      true
    
    
      org.mybatis.spring.boot
      mybatis-spring-boot-starter
      1.3.2
    
    
      mysql
      mysql-connector-java
    
  

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

四、application.yml

# 数据源
spring:
 application:
  name: shardingjdbc-shardingtable-demo
 datasource:
  url: jdbc:mysql://localhost:3306/sharding_0?serverTimezone=UTC
  username: root
  password: root
  driver-class-name: com.mysql.jdbc.Driver
  dbcp2:
   min-idle: 5                # 数据库连接池的最小维持连接数
   initial-size: 5              # 初始化连接数
   max-total: 5                # 最大连接数
   max-wait-millis: 150            # 等待连接获取的最大超时时间

# mybatis配置
mybatis:
 mapper-locations: classpath:mapper/*.xml  # mapper映射文件位置
 type-aliases-package: com.gouggou.shardingtable.entity  # 实体类所在的位置
 configuration:
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  #用于控制台打印sql语句

五、启动类Application

  说明:

  1、@MapperScan的:扫描mapper接口的位置

  2、@ComponentScan:如果Application文件的位置不是与controller、entity、mapper、service等包处于并列的关系。就要用此注解,否则可以不用;

@MapperScan("com.gouggou.shardingtable.mapper")
@SpringBootApplication
public class Application {

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

}

六、controller

@RequestMapping("student")
@RestController
public class UserController {

  @Autowired
  private UserService userService;

  @RequestMapping("save")
  public String save() {
    User user = new User();
    user.setUserId(new Random().nextInt( 1000 ) + 1);
    user.setName("张三"+user.getUserId());
    user.setAge(new Random().nextInt( 80 ) + 1);
    userService.insert(user);
    return user.getName()+"创建成功!";
  }

}

七、service

public interface UserService {
  Integer insert(User u);
  List findAll();
  List findByUserIds(List userIds);
}
@Service
public class UserServiceImpl implements UserService {

  @Autowired
  private UserMapper userMapper;

  @Override
  public Integer insert(User u) {
    return userMapper.insert(u);
  }

  @Override
  public List findAll() {
    return userMapper.findAll();
  }

  @Override
  public List findByUserIds(List userIds) {
    return userMapper.findByUserIds(userIds);
  }
}

八、entity

@Data
public class User implements Serializable {
  private static final long serialVersionUID = -5514139686858156155L;
  private Integer id;
  private Integer userId;
  private String name;
  private Integer age;
}

九、Mapper

@Repository
public interface UserMapper {
  Integer insert(User u);
  List findAll();
  List findByUserIds(List userIds);
}



  
    
    
    
    
  

  
  insert into t_user_00 (user_id,name,age) values (#{userId},#{name},#{age})
 

  

  

  
   id,user_id,name,age
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(SpringBoot如何通过yml方式整合Mybatis)