SpringBoot-Mybaits整合

@Springboot-Mybatis整合

SpringBoot-Mybatis整合

开始搭建

创建项目:
在这里插入图片描述
在这里插入图片描述
添加基础的依赖:
在这里插入图片描述
项目初始结构:
在这里插入图片描述
依赖文件:
按照pom文件补齐需要的依赖:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>

       <groupId>com.lucunxin</groupId>
       <artifactId>lucunxin</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <packaging>war</packaging>

       <name>lucunxin</name>
       <description>Demo project for Spring Boot</description>

       <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.0.1.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
       </parent>

       <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
              <java.version>1.8</java.version>
       </properties>

       <dependencies>
              <dependency>
                     <groupId>org.springframework.boot</groupId>
                     <artifactId>spring-boot-starter-web</artifactId>
              </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>
                     <scope>runtime</scope>
              </dependency>
              <dependency>
                     <groupId>org.springframework.boot</groupId>
                     <artifactId>spring-boot-starter-test</artifactId>
                     <scope>test</scope>
              </dependency>
              <dependency>
                     <groupId>org.apache.commons</groupId>
                     <artifactId>commons-lang3</artifactId>
                     <version>3.4</version>
              </dependency>


              <dependency>
                     <groupId>com.fasterxml.jackson.core</groupId>
                     <artifactId>jackson-core</artifactId>
              </dependency>
              <dependency>
                     <groupId>com.fasterxml.jackson.core</groupId>
                     <artifactId>jackson-databind</artifactId>
              </dependency>
              <dependency>
                     <groupId>com.fasterxml.jackson.datatype</groupId>
                     <artifactId>jackson-datatype-joda</artifactId>
              </dependency>
              <dependency>
                     <groupId>com.fasterxml.jackson.module</groupId>
                     <artifactId>jackson-module-parameter-names</artifactId>
              </dependency>
              <!-- 分页插件 -->
              <dependency>
                     <groupId>com.github.pagehelper</groupId>
                     <artifactId>pagehelper-spring-boot-starter</artifactId>
                     <version>1.2.5</version>
              </dependency>
              <!-- alibaba的druid数据库连接池 -->
              <dependency>
                     <groupId>com.alibaba</groupId>
                     <artifactId>druid-spring-boot-starter</artifactId>
                     <version>1.1.9</version>
              </dependency>
       </dependencies>

       <build>
              <plugins>
                     <plugin>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-maven-plugin</artifactId>
                     </plugin>
              </plugins>
       </build>

</project>

项目启动类:

package com.lucunxin;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.lucunxin.dao")
public class DemoApplication {

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

注意:@MapperScan(“com.lucunxin.mapper”)这个注解非常的关键,这个对应了项目中mapper(dao)所对应的包路径

配置:
可以根据个人使用习惯选择使用properties或者yml文件,本项目使用的是yml配置文件,所以把原本application.properties删除,创建一个application.yml文件

在resource文件夹下创建application.yml

server:
  port: 8080


spring:
    datasource:
        name: mysql_test
        type: com.alibaba.druid.pool.DruidDataSource
        #druid相关配置
        druid:
          #监控统计拦截的filters
          filters: stat
          driver-class-name: com.mysql.jdbc.Driver
          #基本属性
          url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
          username: root
          password: 123
          #配置初始化大小/最小/最大
          initial-size: 1
          min-idle: 1
          max-active: 20
          #获取连接等待超时时间
          max-wait: 60000
          #间隔多久进行一次检测,检测需要关闭的空闲连接
          time-between-eviction-runs-millis: 60000
          #一个连接在池中最小生存的时间
          min-evictable-idle-time-millis: 300000
          validation-query: SELECT 'x'
          test-while-idle: true
          test-on-borrow: false
          test-on-return: false
          #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
          pool-prepared-statements: false
          max-pool-prepared-statement-per-connection-size: 20
## 该配置节点为独立的节点,有很多同学容易将这个配置放在spring的节点下,导致配置无法被识别
mybatis:
  mapper-locations: classpath:mapper/*.xml  #注意:一定要对应mapper映射xml文件的所在路径
  type-aliases-package: com.lucunxin.model  # 注意:对应实体类的路径

#pagehelper
pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql
    returnPageInfo: check

创建包:

在这里插入图片描述

创建数据库和数据表

CREATE DATABASE mytest;

CREATE TABLE t_user(
  userId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  userName VARCHAR(255) NOT NULL ,
  password VARCHAR(255) NOT NULL ,
  phone VARCHAR(255) NOT NULL
) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;

创建实体类:UserDomain.java

package com.lucunxin.model;

public class UserDomain {
  private Integer userId;

  private String userName;

  private String password;

  private String phone;

  public Integer getUserId() {
    return userId;
  }

  public String getUserName() {
    return userName;
  }

  public String getPassword() {
    return password;
  }

  public String getPhone() {
    return phone;
  }

  public void setUserId(Integer userId) {
    this.userId = userId;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public void setPhone(String phone) {
    this.phone = phone;
  }
}

创建:UserDao.java

package com.lucunxin.dao;

import java.util.List;

import com.lucunxin.model.UserDomain;

public interface UserDao {
  
  int insert(UserDomain record);

  List<UserDomain> selectUsers();
}

创建mybatis映射文件: 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.lucunxin.dao.UserDao" >
    <sql id="BASE_TABLE">
        t_user
    </sql>

    <sql id="BASE_COLUMN">
        userId,userName,password,phone
    </sql>

    <insert id="insert" parameterType="com.lucunxin.model.UserDomain">
        INSERT INTO
        <include refid="BASE_TABLE"/>
        <trim prefix="(" suffix=")" suffixOverrides=",">
            userName,password,
            <if test="phone != null">
                phone,
            </if>
        </trim>
        <trim prefix="VALUES(" suffix=")" suffixOverrides=",">
            #{userName, jdbcType=VARCHAR},#{password, jdbcType=VARCHAR},
            <if test="phone != null">
                #{phone, jdbcType=VARCHAR},
            </if>
        </trim>
    </insert>

    <select id="selectUsers" resultType="com.lucunxin.model.UserDomain">
        SELECT
        <include refid="BASE_COLUMN"/>
        FROM
        <include refid="BASE_TABLE"/>
    </select>

</mapper>
注意:<mapper namespace="com.lucunxin.dao.UserDao" > 一定要对应自己dao所在的包路径

创建controller,service文件

UserService.java

package com.lucunxin.service;

import com.lucunxin.model.UserDomain;
import com.github.pagehelper.PageInfo;

public interface UserService {

  int addUser(UserDomain user);

  PageInfo<UserDomain> findAllUser(int pageNum, int pageSize);
}

UserServiceImpl

package com.lucunxin.service.impl;

import com.lucunxin.dao.UserDao;
import com.lucunxin.model.UserDomain;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lucunxin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service(value = "userService")
public class UserServiceImpl implements UserService {

  @Autowired
  private UserDao userDao;//这里会报错,但是并不会影响 可以设置安全级别就不会报错

  @Override
  public int addUser(UserDomain user) {

    return userDao.insert(user);
  }

  /*
   * 这个方法中用到了我们开头配置依赖的分页插件pagehelper
   * 只需要在service层传入参数,然后将参数传递给一个插件的一个静态方法即可;
   * pageNum 开始页数
   * pageSize 每页显示的数据条数
   * */
  @Override
  public PageInfo<UserDomain> findAllUser(int pageNum, int pageSize) {
    //将参数传给这个方法就可以实现物理分页。
    PageHelper.startPage(pageNum, pageSize);
    List<UserDomain> userDomains = userDao.selectUsers();
    PageInfo result = new PageInfo(userDomains);
    return result;
  }
}

设置安全级别

在这里插入图片描述

UserController.java

package com.lucunxin.controller;

import com.lucunxin.model.UserDomain;
import com.lucunxin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
@RequestMapping(value = "/user")
public class UserController {

  @Autowired
  private UserService userService;

  @ResponseBody
  @PostMapping("/add")
  public int addUser(UserDomain user){
    return userService.addUser(user);
  }

  @ResponseBody
  @GetMapping("/all")
  public Object findAllUser(
      @RequestParam(name = "pageNum", required = false, defaultValue = "1")
          int pageNum,
      @RequestParam(name = "pageSize", required = false, defaultValue = "10")
          int pageSize){
    return userService.findAllUser(pageNum,pageSize);
  }
}

项目最终的结构:

在这里插入图片描述

测试:

启动项目
启动成功

在这里插入图片描述

Postman测试
添加成功
在这里插入图片描述
数据库:
在这里插入图片描述

————————————————————————————————————


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值