分享

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

 程序员读书空间 2023-03-22 发布于浙江

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

搜索 mvnrepository

https:///

然后在项目的 pom.xml 中添加依赖如下

<!-- https:///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:///artifact/mysql/mysql-connector-java --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.32</version></dependency>

添加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") // 扫描DAOpublic 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 接口所在的包

添加数据源配置

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

server:  port: 8899spring:  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

数据库中创建表

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');

编写 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数据

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;
@Servicepublic class UserServiceImpl implements UserService { @Resource private UserMapper userMapper; @Override public List<UserInfo> findList() { return userMapper.selectList(); }}

UserMapper.java 是一个接口

import java.util.List;
public interface UserMapper { List<UserInfo> selectList();}

对应的UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "http:///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>

UserInfo 数据模型

import lombok.Data;import lombok.ToString;
import java.io.Serializable;import java.time.LocalDateTime;
@Data@ToStringpublic class UserInfo implements Serializable { private Long userId; private String userName ; private String userAge; private LocalDateTime createTime;}

配置 maven 打包资源

<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>

然后运行项目

Postman 中访问

http://localhost:8899/user/list

项目源码在这里

https://gitee.com/android.long/spring-boot-study/tree/master/biglead-api-02-mybatis

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多