您的位置:首页 > 编程语言 > Java开发

springboot-mybatis-mysql

2019-07-15 18:15 2556 查看
  1. 整体结构

  2. 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>
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>top.heliming.mybatis</groupId>
    <artifactId>springboot-mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis</name>
    <description>Demo project for Spring Boot</description>
    
    <properties>
    <java.version>1.8</java.version>
    <mybatis.version>1.3.2</mybatis.version>
    <commons-lang3.version>3.4</commons-lang3.version>
    <pagehelper.version>1.2.5</pagehelper.version>
    <druid.version>1.1.9</druid.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>${mybatis.version}</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>${commons-lang3.version}</version>
    </dependency>
    <!-- 分页插件 -->
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>${pagehelper.version}</version>
    </dependency>
    <!-- alibaba的druid数据库连接池 -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid.version}</version>
    </dependency>
    </dependencies>
    
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    
    </project>
  3. 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/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    username: manager
    password: 123
    #配置初始化大小/最小/最大
    initial-size: 5
    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
    
    mybatis:
    mapper-locations: classpath:mapper/*.xml
    type-aliases-package: top.heliming.mybatis.springbootmybatis.pojo
    
    #pagehelper
    #如此配置就可使用分页功能,分页注意事项:
    #
    #在pageHelper.startpage方法后的第一条查询方法才会被分页
    #
    #带有for update 行锁的语句,不要使用分页插件,会抛异常
    pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql
    returnPageInfo: check
  4. pojo

    package top.heliming.mybatis.springbootmybatis.pojo;
    
    /**
    * 测试实体类
    */
    public class User {
    private Integer userId;
    private String userName;
    private String password;
    private Long phone;
    
    public Integer getUserId() {
    return userId;
    }
    
    public void setUserId(Integer userId) {
    this.userId = userId;
    }
    
    public String getUserName() {
    return userName;
    }
    
    public void setUserName(String userName) {
    this.userName = userName;
    }
    
    public String getPassword() {
    return password;
    }
    
    public void setPassword(String password) {
    this.password = password;
    }
    
    public Long getPhone() {
    return phone;
    }
    
    public void setPhone(Long phone) {
    this.phone = phone;
    }
    
    @Override
    public String toString() {
    return "User{" +
    "userId=" + userId +
    ", userName='" + userName + '\'' +
    ", password='" + password + '\'' +
    ", phone=" + phone +
    '}';
    }
    }
  5. dao

    package top.heliming.mybatis.springbootmybatis.dao;
    
    import org.springframework.stereotype.Repository;
    import top.heliming.mybatis.springbootmybatis.pojo.User;
    
    import java.util.List;
    @Repository
    public interface UserDao {
    int insert(User user);
    List<User> selectUsers();
    }
  6. service

    package top.heliming.mybatis.springbootmybatis.service;
    
    import com.github.pagehelper.PageInfo;
    import top.heliming.mybatis.springbootmybatis.pojo.User;
    
    public interface UserService {
    int addUser(User user);
    
    PageInfo<User> findAllUser(int pageNum, int pageSize);
    }
  7. Impl

    package top.heliming.mybatis.springbootmybatis.service.impl;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import top.heliming.mybatis.springbootmybatis.dao.UserDao;
    import top.heliming.mybatis.springbootmybatis.pojo.User;
    import top.heliming.mybatis.springbootmybatis.service.UserService;
    
    import java.util.List;
    
    @Service(value = "userService")
    public class UserServiceImpl implements UserService {
    
    @Autowired
    private UserDao userDao;
    
    @Override
    public int addUser(User user) {
    
    return userDao.insert(user);
    }
    
    /*
    * 这个方法中用到了我们开头配置依赖的分页插件pagehelper
    * 很简单,只需要在service层传入参数,然后将参数传递给一个插件的一个静态方法即可;
    * pageNum 开始页数
    * pageSize 每页显示的数据条数
    * */
    @Override
    public PageInfo<User> findAllUser(int pageNum, int pageSize) {
    //将参数传给这个方法就可以实现物理分页了,非常简单。
    PageHelper.startPage(pageNum, pageSize);
    List<User> users = userDao.selectUsers();
    PageInfo result = new PageInfo(users);
    return result;
    }
    }
  8. controller

    package top.heliming.mybatis.springbootmybatis.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import top.heliming.mybatis.springbootmybatis.pojo.User;
    import top.heliming.mybatis.springbootmybatis.service.UserService;
    
    @RestController
    @RequestMapping(value = "/user")
    public class UserController {
    
    @Autowired
    private UserService userService;
    
    @PostMapping("/add")
    public int addUser(User user) {
    return userService.addUser(user);
    }
    
    @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);
    }
    }
  9. 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="top.heliming.mybatis.springbootmybatis.dao.UserDao" >
    <sql id="BASE_TABLE">
    t_user
    </sql>
    
    <sql id="BASE_COLUMN">
    userId,userName,password,phone
    </sql>
    
    <insert id="insert" parameterType="top.heliming.mybatis.springbootmybatis.pojo.User">
    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="top.heliming.mybatis.springbootmybatis.pojo.User">
    SELECT
    <include refid="BASE_COLUMN"/>
    FROM
    <include refid="BASE_TABLE"/>
    </select>
    </mapper>
  10. SpringbootMybatisApplicationTests

    package top.heliming.mybatis.springbootmybatis;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringbootMybatisApplicationTests {
    
    @Test
    public void contextLoads() {
    }
    
    }
  11. UserControllerTest

    package top.heliming.mybatis.springbootmybatis.controller;
    
    import com.github.pagehelper.PageInfo;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import top.heliming.mybatis.springbootmybatis.SpringbootMybatisApplicationTests;
    import top.heliming.mybatis.springbootmybatis.dao.UserDao;
    import top.heliming.mybatis.springbootmybatis.pojo.User;
    import top.heliming.mybatis.springbootmybatis.service.UserService;
    
    import static org.junit.Assert.*;
    
    public class UserControllerTest extends SpringbootMybatisApplicationTests {
    @Autowired
    private UserService userService;
    
    @Autowired
    private UserDao userDao;
    
    @Test
    public void addUser() {
    User user = new User();
    user.setUserName("小红");
    user.setPassword("000000");
    user.setPhone(13490234321L);
    int insert = userDao.insert(user);
    assertEquals(insert,1);
    user.setUserName("小明");
    user.setPassword("000000");
    user.setPhone(13490234320L);
    insert = userDao.insert(user);
    assertEquals(insert,1);
    }
    
    @Test
    public void findAllUser(){
    PageInfo<User> pageInfo =  userService.findAllUser(0, 5);
    System.out.println(pageInfo);
    assertNotNull(pageInfo);
    }
    
    }
  12. test.sql

    /*
    Navicat Premium Data Transfer
    
    Source Server         : manager
    Source Server Type    : MySQL
    Source Server Version : 50726
    Source Host           : localhost:3306
    Source Schema         : test
    
    Target Server Type    : MySQL
    Target Server Version : 50726
    File Encoding         : 65001
    
    Date: 15/07/2019 00:44:56
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for t_user
    -- ----------------------------
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
    `userId` int(11) NOT NULL AUTO_INCREMENT,
    `userName` varchar(255) DEFAULT '',
    `password` varchar(255) DEFAULT '',
    `phone` bigint(11) DEFAULT '0',
    PRIMARY KEY (`userId`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1007 DEFAULT CHARSET=utf8mb4;
    
    -- ----------------------------
    -- Records of t_user
    -- ----------------------------
    BEGIN;
    INSERT INTO `t_user` VALUES (1005, '小红', '000000', 13490234321);
    INSERT INTO `t_user` VALUES (1006, '小明', '000000', 13490234320);
    COMMIT;
    
    SET FOREIGN_KEY_CHECKS = 1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息