环境:

JDK8+windows10

步骤 New Module —>Spring Initializr—>next

1

2.

3。web勾选web,sql里面可以不勾,后续添加,另外,勾选了MyBatis会报错Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required 这样的错误。这里我勾选了是为了待会解决这个错误

选完直接下一步到最后就行了

自动生成的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.0.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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>2.0.0</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>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

## 目录结构

因为没有配置数据库和任何文件,application是空的 ,默认端口是8080

我们需要在 在启动累忽略数据库配置

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

然后 用postman访问一下  说明项目是正常的

4.配置数据库 application.yml 文件

server:
port: 8080
tomcat:
uri-encoding: UTF-8
servlet:
context-path: /
spring:
dataSource:
url: jdbc:mysql://localhost:3306/db-test?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false
username: root
password: 123456
driverClassName: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:com/example/demo/mapper/*Mapper.xml #注意:一定要对应mapper映射xml文件的所在路径
type-aliases-package: com.example.demo.model # 注意:对应实体类的路径
configuration:
call-setters-on-nulls: true # 解决使用map类型接收查询结果的时候为null的字段会没有的情况

这时候 com.mysql.jdbc.Driver 标红 说明mysql架包找不到

把<scope>runtime</scope> 去掉,  他的意思是运行时不需要,实际上是需要的

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

改成  版本默认就行

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

然后driverClassName 恢复正常

导入 service dao xml (这里没有使用实体类返回,使用的是map返回,所以表我们可以随意自建)

UserController

@Controller
@RequestMapping("/usersDemo")
public class UserController {
private static Logger log = LoggerFactory.getLogger(UserController.class);
@Resource
UserService userService; @ResponseBody
@RequestMapping(value = "/test", produces = "application/json;charset=UTF-8", method = {RequestMethod.POST, RequestMethod.GET})
public List<Map<String, Object>> test(){
log.info("进入了test方法!");
List<Map<String,Object>> list=userService.userQueryAll();
return list;
}
}

UserService

public interface UserService {
List<Map<String, Object>> userQueryAll();
}

UserserviceImpl

@Service
public class UserserviceImpl implements UserService {
@Resource
UserMapper userDao;
@Override
public List<Map<String, Object>> userQueryAll() {
return userDao.userQueryAll();
}
}

UserMapper

@Mapper
public interface UserMapper {
List<Map<String, Object>> userQueryAll();
}

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.example.demo.dao.UserMapper">
<select id="userQueryAll" parameterType="Map" resultType="Map">
SELECT * FROM `users`
</select>
</mapper>

DemoApplication

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan("com.example.demo.dao")
@ComponentScan(basePackages = {"com.example.demo.*"})
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
} }

好了 ,

接下来就是启动了

5启动

注意 :依赖注入后 如果没有去掉 exclude = {DataSourceAutoConfiguration.class}

启动会报如下错误:

Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

错误原因1:

很多人说 创建项目的时候勾选了mybatis导致
实际上是这个架包的原因
如果不要的话也不能使用mybatis了
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>

错误原因2 ,

dataSource.type 使用默认的连接池导致的

解决方案1 :去掉 exclude = {DataSourceAutoConfiguration.class} ,就能正常启动

解决方案2 :使用其他连接池 ,比如阿里 druid 连接池

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>

然后修改application.yml  里面的  spring.dataSource.type=com.alibaba.druid.pool.DruidDataSource

就可以不删除 exclude = {DataSourceAutoConfiguration.class}了 ,实际上意义不大,属于低级错误

6 继续启动,

日志是没错了, 然后访问数据库的时候 可能会出现

这样的错误

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.demo.dao.UserMapper.userQueryAll

错误可能原因 1.   mapper.xml   select 的 id写错了

解决方案:检查代码

错误可能原因 2. 程序没有编译xml文件

解决方案:pom.xml 文件 build里面 增加代码

<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>

再次启动 :

成功

最终 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 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.0.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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>2.0.0</version>
</dependency>
<!-- alibaba的druid数据库连接池监控依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build> </project>

跳转网页404 错误解决方案 :https://blog.csdn.net/q18771811872/article/details/88051260

转载请附带原地址:https://blog.csdn.net/q18771811872/article/details/88126835

IntelliJ IDEA ,springboot 2.0 +mybatis 创建和访问数据库的更多相关文章

  1. 玩转SpringBoot之整合Mybatis拦截器对数据库水平分表

    利用Mybatis拦截器对数据库水平分表 需求描述 当数据量比较多时,放在一个表中的时候会影响查询效率:或者数据的时效性只是当月有效的时候:这时我们就会涉及到数据库的分表操作了.当然,你也可以使用比较 ...

  2. 搭建 springboot 2.0 mybatis 读写分离 配置区分不同环境

    最近公司打算使用springboot2.0, springboot支持HTTP/2,所以提前先搭建一下环境.网上很多都在springboot1.5实现的,所以还是有些差异的.接下来咱们一块看一下. 文 ...

  3. SpringBoot 2.0 mybatis mapper通用类

    <!---mybatis通用类包含mybatis和连接池 mybatis和连接池就不需要引入--> <dependency> <groupId>tk.mybatis ...

  4. mysql 8.0.X 创建新的数据库、用户并授权

    一.创建数据库 mysql> create database jira; Query OK, 0 rows affected (0.09 sec) 二.创建用户 mysql> create ...

  5. mysql 8.0.12 创建新的数据库、用户并授权

    Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [root@host]# mysqladmin -u root password "new_p ...

  6. SpringBoot 中 使用Mybatis时 如果后端数据库为 Oracle注意事项

    报错信息如下: Could not set parameters for mapping: ParameterMapping{property='age', mode=IN, javaType=cla ...

  7. 【转】使用PowerDesigner的建模创建升级管理数据库

    使用PowerDesigner的建模创建升级管理数据库 PowerDesigner是一种著名的CASE建摸工具,最开始为数据库建模设计,即物理模型(Physical Data Model)用于生成数据 ...

  8. Springboot 2.0.4 整合Mybatis出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

    在使用Springboot 2.0.4 整合Mybatis的时候出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are require ...

  9. springboot2.0 Mybatis 整合

    原文:https://blog.csdn.net/Winter_chen001/article/details/80010967 环境/版本一览: 开发工具:Intellij IDEA 2017.1. ...

随机推荐

  1. (转).gitignore详解

    本文转自http://sentsin.com/web/666.html 今天讲讲Git中非常重要的一个文件——.gitignore. 首先要强调一点,这个文件的完整文件名就是“.gitignore”, ...

  2. Divisibility by 25 CodeForces - 988E

    You are given an integer nn from 11 to 10181018 without leading zeroes. In one move you can swap any ...

  3. Django之include本质

    一. URL name详解 from django.conf.urls import url from django.contrib import admin from calc import vie ...

  4. 零基础学 JavaScript 全彩版 明日科技 编著

    第1篇 基础知识 第1章 JavaScript简介 1.1 JavaScript简述 1.2 WebStorm的下载与安装 1.3 JavaScript在HTML中的使用 1.3.1 在页面中直接嵌入 ...

  5. PHP中define()和const定义常量的区别

    在PHP中可以通过define()和const两种方式定义常量可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么? 从5.3版本 ...

  6. POJ 2021 Relative Relatives

    Relative Relatives Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3339   Accepted: 146 ...

  7. 慢查询阻塞了xtrabackup进而阻塞以后的sql导致的系统瘫痪问题

    收到开发反应一库的sql频繁超时,系统几乎瘫痪,无法执行任何操作,我登上库先查看到当前的线程,发现有大量的线程状态是 Waiting for table flush 查看当前的事务 从昨天开始执行,到 ...

  8. kb-09-线段树--区间合并比较繁

    /* hdu-1540 题意:一个线段,长度为n,三种操作,Dx,挖掉某个点:R,恢复最近被挖掉的点:Qx查询该点所在的连续区间的长度: 树的节点维护三个变量,该节点左边界开始连续的个数ll,右边界开 ...

  9. 周赛Problem 1025: Hkhv love spent money(RMQ)

    Problem 1025: Hkhv love spent money Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit interger ...

  10. Eclipse + Apache Axis2 发布SOAP WebService(三)第一个程序Hello Axis2 SOAP!

    因为Axis2同时支持SOAP和RESTful的WebService开发. 我的目标主要是RESTful,这里简单记录一个SOAP的小例子: 原文地址:https://jingyan.baidu.co ...