springboot+mybatis的一些问题和解决方法的记录

最近想要学习一下java的web框架,听说springboot搭建起来要简单很多,且网上有很多教程.所以就学习一下如何搭建现在把碰到的问题写一下给自己做一下记录.

1.创建项目
我这里使用idea.再勾选maven依赖那个地方可以选择自己想要的依赖库.但是后面也可以在pom里面配,所以我直接就只选了springweb.

创建项目点下一步

勾选springweb依赖

之后下一步就完成了创建.

2.创建controller文件
现在在 src.main.java.你的项目创建controller文件夹和controller文件

创建controller文件

在controller里面写下一个hello测试方法

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class BlogController {
    @ResponseBody
    @RequestMapping(value = "/hello")
    public String hello() {
        return "Hello World";
    }
}

打开浏览器输入如下地址发现工程已经基本搭建完毕.


搭建完成

是不是很简单呢.

3.配置mybatis的相关内容
先去application里面配置数据库等相关的东西

spring:
    datasource:
        name: test
        url: jdbc:mysql://127.0.0.1:3306/task?useCharactorEncoding=utf-8&serverTimezone=UTC&useSSL=false
        username: root
        password: root123
        #driver-class-name: com.mysql.jdbc.Driver    #导致异常 Loading class `com.mysql.jdbc.Driver'. This is deprecated.    使用新驱动
        driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  type-aliases-package: com.ocean.pojo
  #config-location: classpath:mybatis/mybatis-config.xml  #获取映射包的配置文件
  mapper-locations: classpath:mapping/*Mapper.xml

之后再pom里面引入以下依赖,(我这里还使用generator生成代码所以会多一些依赖)

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.22</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency> 

在bulid 的 plugin里面配置generator的相关配置

<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>

4.generator的相关配置

在resources下面添加generator文件夹和generatorConfig.xml文件.文件结构如图


文件结构

然后再xml中写入如下配置内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
    <classPathEntry location="D:\project\SpringBoot--Learning-master\mysql-connector-java-5.1.25-bin.jar"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/testTable" userId="root" password="root">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.task.demo.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.task.demo.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

记得把数据库驱动包放在你写的位置

然后edit configuration 添加配置

添加generator配置

此时运行generator 可以获取到生成的代码

image.png

注意!!!同一张表一定不要运行多次,因为mapper的映射文件中会生成多次的代码,导致报错,切记

文件结构如下


文件结构

5.在主程序里面添加扫描注解

打开类DemoApplication.java,这个是springboot的启动类。我们需要添加点东西:


添加注解 扫描mapper

到这里基本上搭建完成了.

6.完成service层来完整项目结构
现在在service层写接口来完整项目结构

UserService.java

package com.winter.service;
import com.winter.model.User;
import java.util.List;
/**
 * Created by Administrator on 2017/8/16.
 */
public interface UserService {
 int addUser(User user);
 List<User> findAllUser(int pageNum, int pageSize);
}

UserServiceImpl.java

package com.winter.service.impl;
import com.github.pagehelper.PageHelper;
import com.winter.mapper.UserMapper;
import com.winter.model.User;
import com.winter.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by Administrator on 2017/8/16.
 */
@Service(value = "userService")
public class UserServiceImpl implements UserService {
 @Autowired
 private UserMapper userMapper;//这里会报错,但是并不会影响
 @Override
 public int addUser(User user) {
 return userMapper.insertSelective(user);
 }
 /*
 * 这个方法中用到了我们开头配置依赖的分页插件pagehelper
 * 很简单,只需要在service层传入参数,然后将参数传递给一个插件的一个静态方法即可;
 * pageNum 开始页数
 * pageSize 每页显示的数据条数
 * */
 @Override
 public List<User> findAllUser(int pageNum, int pageSize) {
 //将参数传给这个方法就可以实现物理分页了,非常简单。
 PageHelper.startPage(pageNum, pageSize);
 return userMapper.selectAllUser();
 }
}

如果没有service包和service下面的文件这里可以自己创建并写入

7.在controller下写入测试方法完成数据交互

再在TestController.java下面写入

@Controller
public class TestController {

    @Autowired
    private UserServiceImpl userServiceImpl;

    @ResponseBody
    @RequestMapping(value = "/sql")
    public String sqltest() {
        User userTest = userServiceImpl.selectByPrimaryKey(1);
        return userTest ;
    }
}

这样就会发现自己能拿到数据库的数据了.

到这里就全部完成了.

最后附上一个我看到的教程

https://www.jb51.net/article/146932.htm

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • jHipster - 微服务搭建 CC_简书[https://www.jianshu.com/u/be0d56c4...
    quanjj阅读 829评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,132评论 1 32
  • 一. Java基础部分.................................................
    wy_sure阅读 3,832评论 0 11
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,407评论 0 9
  • springboot 概述 SpringBoot能够快速开发,简化部署,适用于微服务 参考嘟嘟大神SpringBo...
    一纸砚白阅读 5,480评论 2 20