本文并非具体的细节,而是主要的配置步骤

概述

MyBatis 是半自动的ORM 框架,在MyBatis 整合 Spring Boot 的时候步骤比较繁琐,所以写下此篇纪录一下步骤。

使用 MyBatis 框架需要了解 Entity, Dao, Mapper ,Service 这几个包的作用。例如一下几个类 :

Entity 包下的某个bean

public class GoodCategory implements Serializable {
private Integer id; private String name; private static final long serialVersionUID = 1L; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name == null ? null : name.trim();
} @Override
public String toString() {
return "GoodCategory{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}

Dao

public interface GoodCategoryMapper {
long countByExample(GoodCategoryExample example); int deleteByExample(GoodCategoryExample example); int deleteByPrimaryKey(Integer id); int insert(GoodCategory record); int insertSelective(GoodCategory record); List<GoodCategory> selectByExample(GoodCategoryExample example); GoodCategory selectByPrimaryKey(Integer id); int updateByExampleSelective(@Param("record") GoodCategory record, @Param("example") GoodCategoryExample example); int updateByExample(@Param("record") GoodCategory record, @Param("example") GoodCategoryExample example); int updateByPrimaryKeySelective(GoodCategory record); int updateByPrimaryKey(GoodCategory record);
}

Mapper

<?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.vb.seckillserver.dao.good.GoodCategoryMapper">
<resultMap id="BaseResultMap" type="GoodCategory">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="CHAR" property="name" />
</resultMap>
...
...
</mapper>

Service

public interface GoodService {
List<GoodCategory> getAllGoodCatory();
List<ProductBrank> getAllGoodBrand();
List<GoodStore> getAllGoodStore();
List<GoodType> getAllGoodType();
List<GoodBean> getGoodProSkuByCateId(int categoryId);
List<GoodBean> getGoodProSkuByBrandId(int brandId);
boolean createProduct(GoodProduct product);
}

生成 Dao,Entity 和 Map 文件可以使用MyBatis Generator 工具生成,步骤参见该篇文章

步骤

依赖

   <!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency> <!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>

属性配置

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>
<settings>
<!--使用jdbc的getGeneratekeys获取自增主键值-->
<setting name="useGeneratedKeys" value="true"/> <!--使用列别名替换列名  默认值为true
select name as title(实体中的属性名是title) form table;
开启后mybatis会自动帮我们把表中name的值赋到对应实体的title属性中
-->
<setting name="useColumnLabel" value="true"/> <!--开启驼峰命名转换 例如: Table field:create_time 到 Entity(createTime)-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--懒加载,为了解决多表连接问题,当一个类(bean)嵌套一个类的情况时,解决N+1 问题-->
<!--<setting name="lazyLoadingEnabled" value="true"/>-->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
</settings> </configuration>

application.properties 里面配置,指定map文件位置和其他属性.

spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/seckill?useUnicode=true&characterEncoding=utf8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=12345678 mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:/mapper/**/*.xml
mybatis.type-aliases-package=com.vb.seckillserver.entity

Application 文件上注解

@SpringBootApplication
@MapperScan("com.vb.seckillserver.dao")
public class SeckillServerApplication { public static void main(String[] args) {
SpringApplication.run(SeckillServerApplication.class, args);
} }

编写测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class GoodServiceImplTest { @Autowired
private GoodService mGoodService; @Test
public void getAllGoodCatory() {
List<GoodCategory> allGoodCatory = mGoodService.getAllGoodCatory();
for (GoodCategory category : allGoodCatory) {
System.out.println("xyz ;"+category.getName());
}
}
}

补充

  • map文件中,namespace 需要指定全限定文件名,而要是有指定Entity 缩写简称,resultMap 中 type 名字只需要类名即可

参考资料

  • 无

MyBatis --- 配置步骤的更多相关文章

  1. spring MVC、mybatis配置读写分离

    spring MVC.mybatis配置读写分离 1.环境: 3台数据库机器,一个master,二台slave,分别为slave1,slave2 2.要实现的目标: ①使数据写入到master ②读数 ...

  2. Mybatis配置

      首先导入mybatis-3.2.3.jar包 还有连接数据库的驱动包   工程中必须导入的三个包(对应的包附件中可以下载):   mybatis-3.2.3.jar sqljdbc.jar log ...

  3. log4j.properties 详解与配置步骤

    一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失IN ...

  4. log4j.properties 详解与配置步骤(转)

    找的文章,供参考使用 转自 log4j.properties 详解与配置步骤 一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR ...

  5. MySQL数据库集群进行正确配置步骤

    MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...

  6. Apache安装配置步骤

    注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...

  7. Windows Live Writer配置步骤

    推荐文档: [超详细教程]使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结 Live Writer 使用小贴示:发博客时始终使用图片原始 ...

  8. Oracle 11g客户端在Linux系统上的配置步骤详解

    Oracle 11g客户端在Linux系统上的配置步骤详解 2011-07-26 10:47 newhappy2008 CSDN博客 字号:T | T 本文我们主要介绍了Oracle 11g客户端在L ...

  9. jenkins 邮件配置步骤

    一.进行系统管理中的邮件配置步骤: 1.设置Extended E-mail Notification 二.对构建的job 添加邮件发送的步骤: 3.成功截图:

随机推荐

  1. NetCore入门篇:(六)Net Core项目使用Controller之一

    一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择完全抛弃传统mvc模式,使用html + webapi模 ...

  2. 【BZOJ3238】[AHOI2013]差异

    [BZOJ3238][AHOI2013]差异 题面 给定字符串\(S\),令\(T_i\)表示以它从第\(i\)个字符开始的后缀.求 \[ \sum_{1\leq i<j\leq n}len(T ...

  3. C++ malloc 和 new 的函数说明

    malloc 和 new 一些不同点 1.  数组变量的申请 int *p = (int *) malloc (sizeof(int) * 5); if(p==NUILL) return; free ...

  4. AGC032D Rotation Sort

    题目传送门 Description 给定\(N\)的排列(\(N\leq5000\)),将任一区间最左侧的数插到该区间最右边的代价为\(A\),将任一区间最右侧的数插到该区间最左边的代价为\(B\), ...

  5. 使用Navicat 创建mysql存储过程,实现日期加流水号序列

    目的:使用Navicat 创建mysql存储过程,实现格式为8位日期(年月日)+5位流水号序列. 步骤: 1.打开Navicat 登录数据库,点击导航栏上的函数,如下图: 2.点击新建函数,选择“过程 ...

  6. JavaScript把函数作为另一函数的参数

    首先说一下这个问题是怎么产生的:今天看排序算法,想要比较不同的排序算法的时间花费. 最简单的时间统计方法是在程序块开始和结束时分别计时,求一下时间差就能得出该段代码的耗时. 如: var foo = ...

  7. innodb分配内存

    innodb分配内存有三种方法 1)使用OS的malloc 2)使用innodb自己实现的内存分配方法 3)使用goolge的Tmalloc innodb引擎分析之内存管理 在my.cn配置文件中可设 ...

  8. yii2之前端资源引入

     PS:因新项目后端使用yii2框架,不在使用纯html模板的方式搭建页面(前后端不分离模式)使用yii2的内置boostart封装模板,遂研究了一番yii2 通过yii2官方下载的基础文件结构 其中 ...

  9. Window Location对象

    window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. window.location 对象在编写时可不使用 window 这个前缀. Location ...

  10. 【.NET 4.5】新增的 Prefer 32-bit target platform

    这本来是一个很小的feature并且也没有什么模糊的地方,关键是VS把这个设置成了默认值,当默认为Any CPU的时候,application会被编译成32-bit mode. 下边是我遇到的问题,在 ...