一.根据需求创建数据库表
1.数据库表的字段名必须有"_"下划线,因为mybatis逆向工程在生成的时候有下划线的会自动转换为大写
user_name ---> userName
username--->username
二.创建一个新的SpringBoot项目
2.1选择springboot版本以及所需要的依赖,比如Spring Web
创建时需要网络,若没有网络可能页面加载不出来
三.在pom.xml文件中导入所需依赖
在添加依赖时,我们可以指定版本号,也可以不指定,因为我们的项目继承了springboot的项目,我们项目的父项目的父项目中规定了版本号,一般不指定,使用默认的版本号可以放置不兼容问题
1.MyBatis 整合 SpringBoot 的起步依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2.MySQL 的驱动依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3.引入 Druid 数据源依赖:https://mvnrepository.com/artifact/com.alibaba/druid
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
4.web起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
5.模板页面起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
6.jdbc起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
四、配置springboot的核心配置文件,application.properties中配置数据源
#配置内嵌 Tomcat 端口号
server.port=8080
#配置项目上下文根
server.servlet.context-path=/
#配置数据库的连接信息
当前项目的配置文件
#将springBoot默认的数据源用alibaba的Druid代替
#spring.druiddatasource.type=com.alibaba.druid.pool.DruidDataSource
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#配置alibab的Druid数据源参数
spring.druiddatasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.druiddatasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.druiddatasource.username=root
spring.druiddatasource.password=123456
spring.druiddatasource.initialSize=5
spring.druiddatasource.minIdle=5
spring.druiddatasource.maxActive=20
spring.druiddatasource.maxWait=60000
spring.druiddatasource.timeBetweenEvictionRunsMillis=60000
spring.druiddatasource.minEvictableIdleTimeMillis=300000
spring.druiddatasource.validationQuery=SELECT 1 FROM DUAL
spring.druiddatasource.testWhileIdle=true
spring.druiddatasource.testOnBorrow=false
spring.druiddatasource.testOnReturn=false
spring.druiddatasource.poolPreparedStatements=true
#默认的数据源
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
#spring.datasource.username=root
#spring.datasource.password=123456
#配置MyBatis核心配置文件的位置
#mybatis.config-location=classpath:config/mybatis-config.xml
#配置SQL映射文件的位置
#在 application.properties 配置文件中指定映射文件的位置,这个配置只有接口和映射文件不在同一个包下的情况,才需要指定
#mybatis.mapper-locations=classpath:mapper/*.xml
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
1.使用默认的数据源
使用默认的数据源不需要配置类,只需要在springboot核心配置文件中配置数据库连接信息就可以了
2.使用自定义数据源
替换原来的,替换后需要配置数据源
我们可以创建一个数据源配置类
注解:1.@Configuration
指定当前类是一个配置类,springBoot在加载时会将配置类加载进去
若使用这个注解则在主类中可以不用再次导入配置文件
若是配置文件
2.@ConfigurationProperties(prefix = "spring.druiddatasource")
绑定当前配置类和属性文件,springBoot默认会加载application.properties文件,
也可以使用@PropertySource("classpath:application.properties")绑定配置文件
3.@Bean
写在方法上当前方法的返回值作为一个Bean spring会自动管理这个Bean
3.配置MyBatis核心配置文件的位置
MyBatis的核心配置文件:mybatis-config.xml
1.可以在resources文件夹下建一个config文件夹
2.还可以创建一个配置类
1.@Configuration:同上
2.@MapperScan(""):下面再数据访问接口文件中解释
3.@Bean:同上
mybatis的前身是 ibatis ,最后方法返回的是一个实现了ConfigurationCustomizer接口的实现类,这个类中有一个方法,方法中有一个参数,这个参数对象就是mybatis的核心配置对象,
五、开发代码
1.创建javaBean
GoodBean.java 与数据库对应的java实体类
ResBean.java 返回结果信息
2.创建数据访问接口和SQL映射文件
GoodsMapper.java 数据访问接口文件
1.@Mapper 的作用mybatis自动扫描数据持久层的映射文件及DAO接口的关系,也就是加载mapper映射文件,因为SQL映射文件中<insert>,<select>等标签元素的id值是 GoodsMapper接口中的方法名,所以要使用@Mapper注解将接口文件加载进去
注意:默认情况下 ,mybatis的xml映射文件不会编译到target的class目录下,所以我们需要在pom.xml文件中配置resources以指定文件目录,让springboot把我们的SQL映射文件也包含进去
resources配置在<build>标签里面
2.也可以在主类上使用注解
@MapperScan("com.wangxing.springboot.mapper")
@MapperScan(basePackages ="") 这是MyBatis提供的注解,扫描数据持久层的mapper映射配置文件,DAO接口上就不用加@Mapper了 basePackages通常指定到数据持久层就可以了
@MapperScan("com.wangxing.springboot.mapper")这个注解也可以加到mybatisConfig.java 上因为这个配置类最后也会被加载到主类中,所以和写在主类上效果一样
3.当接口文件和映射文件不在同一个包中时
这里由于需要测试前一种方式所以将mapper下的SQl映射注释了,测试这个的时候去掉文件后的 -- 就可以了
在这种情况下,我们需要在springBoot的配置文件application.properties配置文件中指定映射文件的位置,这个配置只有接口与映射文件
不在同一个包的情况下才需要指定
GoodsMapper.xml SQL映射文件
头文件
<?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">
有时这个dtd结尾的连接会报错,这个是由于网络原因,无法下载这个文件导致的,我们可以将这个约束文件下载下载来配置成本地的就可以了
3.创建Druid数据源配置类,创建MyBatis配置类
DruidConfig.java
MyBatisConfig.java
4.在SpringBoot的核心配置文件[application.properties]中配置数据源参数
application.properties
#将springBoot默认的数据源用alibaba的Druid代替
#spring.druiddatasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#配置alibab的Druid数据源参数
spring.druiddatasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.druiddatasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.druiddatasource.username=root
spring.druiddatasource.password=123456
spring.druiddatasource.initialSize=5
spring.druiddatasource.minIdle=5
spring.druiddatasource.maxActive=20
spring.druiddatasource.maxWait=60000
spring.druiddatasource.timeBetweenEvictionRunsMillis=60000
spring.druiddatasource.minEvictableIdleTimeMillis=300000
spring.druiddatasource.validationQuery=SELECT 1 FROM DUAL
spring.druiddatasource.testWhileIdle=true
spring.druiddatasource.testOnBorrow=false
spring.druiddatasource.testOnReturn=false
spring.druiddatasource.poolPreparedStatements=true
#默认的数据源
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
#spring.datasource.username=root
#spring.datasource.password=12