一、pomx.ml中引入mybatis和postgresql依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- mysql 配置-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- postgresql 配置-->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
二、创建业务实体类:
package com.test.common.tools.dto;
import lombok.*;
/**
* @author dtest
* @date 2020/7/6 8:23 下午
*/
//Data可以自动为字段的所有成员生成getter、setter、、toString
@Data
@Builder
public class UserInfo {
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String passWord;
/**
* 性别
*/
private Integer sex;
/**
* 月薪
*/
private int salary;
/**
* 年龄
*/
private int age;
}
三、创建统一消息返回体:
package com.test.common.tools.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
* @author dtest
* @date 2020/7/21 10:36 上午
*/
@Data
@Component
public class Response implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(name = "code", value = "响应码")
private Integer code;
@ApiModelProperty(name = "message",value = "响应消息")
private String message;
@ApiModelProperty(name = "data",value = "响应体")
private Object data;
}
四、postgresql中创建数据库->表->插入数据(这块内容不做详细介绍,网上资料较多,请参考)
五、配置文件application.properties中增加postgresql及mybatis相关配置
# postgresql config
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/test
# postgresql 连接用户名
spring.datasource.username=postgres
# postgresql 连接用户密码
spring.datasource.password=postgres
# postgresql 连接驱动
spring.datasource.driver-class-name=org.postgresql.Driver
# 使用mybatis-config.xml 配置方式
# mybatis.configuration.* 和mybatis.config-location 不可同时使用
# XML 配置方式
# 指定mybatis-config.xml配置文件的位置
mybatis.config-location=classpath:config/mybatis-config.xml
# 指示是否执行mybatis-config.xml配置文件的状态检查
mybatis.check-config-location=true
# 指定 *Mapper.xml 文件路径
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.test.common.tools.model
注意mybatis最后一行内容,建议增加返回实体的模型包路径,同时springboot最好不要使用多级文件夹区分Mapper.xml文件,最佳实践就是保存在mapper文件夹下。
六、配置 mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- MyBatis 全局配置 也可以在application-dev.properties 配置 -->
<settings>
<!--logImpl 可选的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING -->
<setting name="logImpl" value="SLF4J"/>
<!--全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。 有效值 true | false 默认值 true-->
<setting name="cacheEnabled" value="true"/>
<!--延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。-->
<!-- 有效值 true | false 默认值 false -->
<setting name="lazyLoadingEnabled" value="false"/>
<!--是否允许单一语句返回多结果集(需要驱动支持)有效值 true | false 默认值 true-->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 使用列标签代替列名。不同的驱动在这方面会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。 -->
<!-- 有效值 true | false 默认值 true -->
<setting name="useColumnLabel" value="true"/>
<!-- 允许 JDBC 支持自动生成主键,需要驱动支持。有效值 true | false 默认值 false
如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能支持但仍可正常工作(比如 Derby) -->
<setting name="useGeneratedKeys" value="false"/>
<!--
指定 MyBatis 应如何自动映射列到字段或属性。
NONE 表示取消自动映射;
PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。
FULL 会自动映射任意复杂的结果集(无论是否嵌套)
有效值:NONE, PARTIAL, FULL
默认值: PARTIAL -->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!--
指定发现自动映射目标未知列(或者未知属性类型)的行为。
NONE: 不做任何反应
WARNING: 输出提醒日志 ('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志等级必须设置为 WARN)
FAILING: 映射失败 (抛出 SqlSessionException)
有效值:NONE, WARNING, FAILING
默认值:NONE
-->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<!--配置默认的执行器。
SIMPLE 就是普通的执行器;
REUSE 执行器会重用预处理语句(prepared statements);
BATCH 执行器将重用语句并执行批量更新。
有效值:SIMPLE REUSE BATCH
默认值:SIMPLE-->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!--设置超时时间,它决定驱动等待数据库响应的秒数。
有效值:任意正整数
默认值:未设置 (null)
-->
<setting name="defaultStatementTimeout" value="25"/>
<!--为驱动的结果集获取数量(fetchSize)设置一个提示值。此参数只可以在查询设置中被覆盖。
有效值:任意正整数
默认值:未设置 (null)
-->
<setting name="defaultFetchSize" value="100"/>
<!--
允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为 false。
有效值 true | false 默认值 false
-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。
有效值 true | false 默认值 false -->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!-- MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。
默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。
若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。
SESSION | STATEMENT
默认值:SESSION-->
<setting name="localCacheScope" value="SESSION"/>
<!--当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。
某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。
有效值:JdbcType 常量,常用值:NULL, VARCHAR 或 OTHER。
默认值:OTHER-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!--指定哪个对象的方法触发一次延迟加载。
用逗号分隔的方法列表。
equals,clone,hashCode,toString-->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
<!-- 定义别名 -->
<typeAliases>
<typeAlias alias="int" type="java.lang.Integer"/>
<typeAlias alias="string" type="java.lang.String"/>
<typeAlias alias="double" type="java.lang.Double"/>
<typeAlias alias="long" type="java.lang.Long"/>
<typeAlias alias="map" type="java.util.Map"/>
</typeAliases>
</configuration>
七、配置 MyBatisConfig.java
本处使用:扫描文件夹方式进行配置;反射方式配置未做实例。
package com.test.common.tools.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Component;
/**
* @author dtest
* @date 2020/7/21 11:30 上午
*/
@Component
@MapperScan(value = "com.test.comon.tools.mapper")
public class MybatisConfig {
}