likes
comments
collection
share

SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】

作者站长头像
站长
· 阅读数 16

SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。 程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发


SpringBoot项目创建【SpringBoot系列1】


引入依赖 Spring Boot对于MyBatis的支持需要引入mybatis-spring-boot-starter的pom文件。

搜索 mvnrepository SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>3.0.1</version>
</dependency>

以及mysql的依赖

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.32</version>
</dependency>

2 添加MyBatis配置

添加MyBatis配置类,配置相关扫描路径,包括DAO,Model,XML映射文件的扫描。

import javax.annotation.Resource;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
@MapperScan("com.biglead.demo.mapper")    // 扫描DAO
public class MybatisConfig {
    @Resource
    private DataSource dataSource;

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setTypeAliasesPackage("com.biglead.demo.pojo");    // 扫描Model

        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        //对应的mapper 
        sessionFactory.setMapperLocations(resolver.getResources("classpath*:**/sqlmap/*.xml"));    // 扫描映射文件

        return sessionFactory.getObject();
    }
}
  • com.biglead.demo.pojo 数据对象实体所在的包
  • classpath*:**/sqlmap/*.xml MyBatis 对应的 xml 所在的包
  • com.biglead.demo.mapper MyBatis 对应的 mapper 接口所在的包

SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】

3 添加数据源配置

打开 application.yml ,添加MySQL数据源连接信息。

server:
  port: 8899
spring:
  mvc:
    pathmatch:
      matching-strategy : ant-path-matcher
  datasource:
    url: jdbc:mysql://mysql:3306/spring_boot?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8&useSSL=false
    username: testadmin
    password: qwert.12345
    driver-class-name: com.mysql.jdbc.Driver

3 基本操作

3.1 创建表

CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_name` varchar(255) DEFAULT NULL,
      `user_age` varchar(255) DEFAULT NULL,
      `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='用户表';

然后插入几条数据

INSERT INTO `spring_boot`.`t_user` (`id`, `user_name`, `user_age`, `create_time`) VALUES (1, '张三', '22', '2023-03-14 12:09:20');
INSERT INTO `spring_boot`.`t_user` (`id`, `user_name`, `user_age`, `create_time`) VALUES (2, '李四', '33', '2023-03-14 12:09:24');

3.2 Controller

import com.biglead.demo.common.R;
import com.biglead.demo.pojo.UserInfo;
import com.biglead.demo.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("user")
public class UserController {
    @Resource
    private UserService userService;
    @GetMapping(value="/list")
    public R hello() {
        List<UserInfo> userInfoList = userService.findList();
        return R.okData(userInfoList);
    }
}
  • @RestController是@ResponseBody和@Controller的组合注解。
  • @Controller 注解将 UserController 类声明成一个控制器
  • @ResponseBody注解的作用是将控制器的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到Response对象的body区,通常用来返回JSON数据或者是XML数据

3.3 Service

CustomConfigService.java

public interface UserService {
    List<UserInfo> findList();
}

UserServiceImpl .java

import com.biglead.demo.mapper.UserMapper;
import com.biglead.demo.pojo.UserInfo;
import com.biglead.demo.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;
    @Override
    public List<UserInfo> findList() {
        return userMapper.selectList();
    }
}

3.4 Mapper 资源

UserMapper.java

import java.util.List;

public interface UserMapper {
    List<UserInfo> selectList();
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.biglead.demo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.biglead.demo.pojo.UserInfo">
        <id column="user_id" jdbcType="BIGINT" property="userId"/>
        <result column="create_time" property="createTime"/>
        <result column="user_name" property="userName"/>
        <result column="user_age" property="userAge"/>
    </resultMap>

    <select id="selectList" resultMap="BaseResultMap">
        select id, user_name, user_age, create_time
        from t_user
    </select>
</mapper>

import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@ToString
public class UserInfo implements Serializable {
    private Long userId;
    private String userName ;
    private String userAge;
    private LocalDateTime createTime;
}


4 打包资源

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <!-- 打包时拷贝MyBatis的映射文件 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/sqlmap/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>  
                <directory>src/main/resources</directory>  
                    <includes> 
                        <include>**/*.*</include>  
                    </includes> 
                    <filtering>true</filtering>  
            </resource> 
        </resources>
    </build>

然后运行项目 SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】

在Postman 中访问 http://localhost:8899/user/list SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】 在 swagger 中 http://localhost:8899/swagger-ui.html SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】 SpringBoot 集成 MyBatis 框架 【SpringBoot系列2】

项目源码在这里 :gitee.com/android.lon… 有兴趣可以关注一下公众号:biglead

本文正在参加「金石计划」