MyBatis --- 配置步骤
本文并非具体的细节,而是主要的配置步骤
概述
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 --- 配置步骤的更多相关文章
- spring MVC、mybatis配置读写分离
spring MVC.mybatis配置读写分离 1.环境: 3台数据库机器,一个master,二台slave,分别为slave1,slave2 2.要实现的目标: ①使数据写入到master ②读数 ...
- Mybatis配置
首先导入mybatis-3.2.3.jar包 还有连接数据库的驱动包 工程中必须导入的三个包(对应的包附件中可以下载): mybatis-3.2.3.jar sqljdbc.jar log ...
- log4j.properties 详解与配置步骤
一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失IN ...
- log4j.properties 详解与配置步骤(转)
找的文章,供参考使用 转自 log4j.properties 详解与配置步骤 一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR ...
- MySQL数据库集群进行正确配置步骤
MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...
- Apache安装配置步骤
注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...
- Windows Live Writer配置步骤
推荐文档: [超详细教程]使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结 Live Writer 使用小贴示:发博客时始终使用图片原始 ...
- Oracle 11g客户端在Linux系统上的配置步骤详解
Oracle 11g客户端在Linux系统上的配置步骤详解 2011-07-26 10:47 newhappy2008 CSDN博客 字号:T | T 本文我们主要介绍了Oracle 11g客户端在L ...
- jenkins 邮件配置步骤
一.进行系统管理中的邮件配置步骤: 1.设置Extended E-mail Notification 二.对构建的job 添加邮件发送的步骤: 3.成功截图:
随机推荐
- Webapi上传数据(XML)敏感字符解决方案
方法名加特性 [ValidateInput(false)] 配置文件加 <httpRuntime requestValidationMode="2.0" targetFram ...
- Android Source 源码已下载但 Android Studio 找不到的解决办法
Android Studio 2.1 reporting in: solved the issue by resetting SDK. Preferences -> Appearance &am ...
- Day 7 深copy和浅Copy
dict.fromkeys的用法 1 2 3 4 5 6 7 8 9 10 11 #dict.fromkeys的用法 #例子1 dic = dict.fromkeys([1,2,3],[]) prin ...
- allowMultiQueries=true允许插入多条语句
在context.xml中,url写成url="jdbc:mysql://localhost:3306/fivecrowdsourcing?allowMultiQueries=true&qu ...
- Java基础学习篇---------封装
一.类和对象分配内存 二.Java中的内部类 : 可以直接去访问外部类的所有属性(包括私有成员) 1.Java中成员内部类 (1).内部类的方法可以直接访问外部类的类中的所有成员变量 (2).外部类 ...
- 650. 2 Keys Keyboard
Initially on a notepad only one character 'A' is present. You can perform two operations on this not ...
- django 实现全局支持跨域请求
Django 实现允许跨域请求 1.安装django-cors-headers pip install django-cors-headers 2.配置settings.py文件 INSTALLED_ ...
- poj3070矩阵快速幂求斐波那契数列
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13172 Accepted: 9368 Desc ...
- [bug]微信小程序使用 <scroll-view> 和 box-shadow 引起页面抖动
背景 为了实现点点点动态loading效果,并且方便使用(只需要给一个空元素加一个.loading),有如下代码: .loader { background-color: #fff; font-siz ...
- C语言的组成 以及预编译
这么多年过去了,回头再来学习一下C语言,发现很多不一样的感觉 #include <stdio.h> int main(int argc, const char * argv[]) { pr ...