zoukankan      html  css  js  c++  java
  • SpringBoot整合Mybatis(yml方式)

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

    一、项目目录结构

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

      

    二、数据库文件

    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

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.13.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.gougou</groupId>
        <artifactId>shardingjdbc-shardingtable-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>shardingjdbc-shardingtable-demo</name>
        <description>shardingjdbc-shardingtable-demo</description>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    四、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<User> findAll();
    
        List<User> findByUserIds(List<Integer> userIds);
    
    }
    @Service
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserMapper userMapper;
    
        @Override
        public Integer insert(User u) {
            return userMapper.insert(u);
        }
    
        @Override
        public List<User> findAll() {
            return userMapper.findAll();
        }
    
        @Override
        public List<User> findByUserIds(List<Integer> 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<User> findAll();
    
        List<User> findByUserIds(List<Integer> userIds);
    
    }
    <?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.gouggou.shardingtable.mapper.UserMapper" >
        <resultMap id="resultMap" type="com.gouggou.shardingtable.entity.User" >
            <id column="id" property="id" jdbcType="INTEGER" />
            <result column="user_id" property="userId" jdbcType="INTEGER" />
            <result column="name" property="name" jdbcType="VARCHAR" />
            <result column="age" property="age" jdbcType="INTEGER" />
        </resultMap>
    
        <insert id="insert">
        insert into t_user_00 (user_id,name,age) values (#{userId},#{name},#{age})
      </insert>
    
        <select id="findAll" resultMap="resultMap">
            select <include refid="columnsName"/> from t_user_00
        </select>
    
        <select id="findByUserIds" resultMap="resultMap">
            select <include refid="columnsName"/> from t_user_00 where user_id in (
            <foreach collection="list" item="item" separator=",">
                #{item}
            </foreach>
            )
    
        </select>
    
        <sql id="columnsName">
         id,user_id,name,age
      </sql>
    </mapper>

    十、遇到的问题

      1、idea 右键无java class选项

        2、maven仓库中产生后缀是LastUpdated的文件

    在全栈的道路上,积极向上、成熟稳重、谦虚好学、怀着炽热的心向前方的走得更远。
  • 相关阅读:
    [Linux] Linux文件系统目录描述简介
    面试题07 二叉树两节点的最低公共祖先 [树]
    [C++] Stack / queue / priority_queue
    c#中byte[]和string的转换
    smartassembly 使用方法
    关于 Expression Blend 4安装是出现的“意见安排重启您的计算机”的解决方法
    php图片压缩
    我的dota之路
    OO系统设计师之路设计模型系列(1)软件架构和软件框架[从老博客搬家至此]
    const用法详解
  • 原文地址:https://www.cnblogs.com/DDgougou/p/12636649.html
Copyright © 2011-2022 走看看