版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringBoot框架开发—SpringBoot整合MyBatisCONTENTSMyBatis简介01.以配置文件的方式整合02.以注解的方式整合03.本节知识点00知识点了解掌握熟练精通MyBatis简介√
整合MyBatis
√数据源配置√
数据库SQL语句编写
√
以配置文件的方式编写数据库读写实例
√以注解的方式编写数据库读写实例
√编写单元测试
√
PART01MyBatis简介MyBatis简介01MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOrdinaryJavaObject,简单无规则java对象)为数据库中的记录。
目前MyBatis的数据库集成方式得到了广泛的应用,在Spring+SpringMVC中整合MyBatis步骤还是有点复杂的,要配置多个Bean和XML文件,SpringBoot中对此做了进一步的简化,使MyBatis基本上可以做到开箱即用,下面就来看看如何在SpringBoot中整合MyBatis。简介PART02以配置文件的方式整合以配置文件的方式整合02【实例3-12】【任务要求】在SpringBoot项目中,以配置文件的方式整合MyBatis框架访问MySQL数据库,对数据表t_category(游戏类型表)进行增删改查等操作。数据库相关脚本如下:。
usespringboot_db;
DROPTABLEIFEXISTS`t_category`;
CREATETABLE`t_category`(
`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'游戏类型ID',
`name`varchar(20)NOTNULLCOMMENT'游戏类型名称',
PRIMARYKEY(`id`)USINGBTREE
);以配置文件的方式整合02【任务实现】创建项目,添加依赖<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>以配置文件的方式整合02【任务实现】创建项目,添加依赖MyBatis-Spring-Boot-Starter依赖将会提供如下:自动检测现有的DataSource。创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递。将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。以配置文件的方式整合02【任务实现】2.配置数据源和MyBatis#使用druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_db?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#mybatismybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=.domainmybatis.configuration.map-underscore-to-camel-case=true以配置文件的方式整合02【任务实现】2.配置数据源和MyBatis
mybatis.mapper-locations作用是扫描Mapper接口对应的XML文件,上述代码中扫描的是resources目录下的mapper文件夹中所有的xml结尾的文件。
mybatis.type-aliases-package属性指定实体类扫描路径,让MyBatis自定扫描到自定义的实体类。如果不指定,在MyBatis的mapper.xml文件中resultType的type或者paramterType会返回自定义实体类,需要用完整的类路径和类名来指定这些实体。
mybatis.configuration.map-underscore-to-camel-case作用是将带有下划线的表字段映射为驼峰格式的实体类属性。MySQL定义字段一般用下划线表示,比如game_name,而在实体类中我们通常把对应的属性名定义为gamaName,这样SQL语句查询返回的字段和映射实体类属性不一致。会导致在写好SQL查询语句后,发现查询出的对象字段都为null。以配置文件的方式整合02【任务实现】3.编写实体类@Component
publicclassCategory{
privateIntegerid;
privateStringname;//分类名
privateList<Game>games;//游戏集合
//省略getter和setter方法//省略toString方法……}在java目录下添加.domain包,并创建Category实体类,用作数据对象的封装。以配置文件的方式整合02【任务实现】4.接口实现@Mapper
publicinterfaceCategoryMapper{
publicCategoryfindCategory(Categorycategory);
List<Category>getAllCategories();
intdeleteCategory(Integerid);
intinsertCategory(@Param("pojo")Categorypojo);
intupdateCategory(@Param("pojo")Categorypojo);
}在java目录下添加.mapper包,并创建CategoryMapper接口。以配置文件的方式整合02【任务实现】5.编写xml文件<mappernamespace=“.mapper.CategoryMapper”>
<resultMapid=“categoryMap”type=“.domain.Category”>
<idcolumn=“id”property=“id”/>
<resultcolumn=“name”property=“name”/>
</resultMap>
<selectid=“findCategory”resultMap=“categoryMap”>
SELECT*FROMt_category
<where>
<iftest=“id!=null”>id=#{id}</if>
<iftest=“name!=null”>andname=#{name}</if>
</where>
</select>
……
编写CategoryMapper.xml代码,将接口中方法对应的SQL直接写在XML文件中,实现数据库的相关操作。以配置文件的方式整合02xml文件的位置<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
第一种方式是直接放在CategoryMapper接口所在的包.mapper下面。放在这里的CategoryMapper.xml会被自动扫描到,但是有另外一个Maven带来的问题,就是java目录下的xml资源在项目打包时会被忽略掉,所以,如果CategoryMapper.xml放在包下,需要在pom.xml文件中再添加如下配置,避免打包时java目录下的XML文件被自动忽略掉。以配置文件的方式整合02xml文件的位置
第二种方式是将CategoryMapper.xml直接放在resources目录下,这样就不用担心打包时被忽略了。我们在resources目录下创建mapper目录用来放mapper文件,目录结构如下。
此时mapper文件又不能自动被扫描到,需要添加额外配置,之前在全局配置文件perties中添加的mybatis.mapper-locations属性可以起到作用,这样mapper就可以正常使用了。注意第二种方式不需要在pom.xml文件中配置文件过滤。以配置文件的方式整合02【任务实现】
6.单元测试@RunWith(SpringRunner.class)
@SpringBootTest
publicclassCategeroyMapperTest{
@Resource
CategoryMappercategoryMapper;
@Autowired
privateCategorycategory;
@Test
publicvoidfindCategoryTest(){
category.setId(1);
System.out.println(categoryMapper.findCategory(category).toString());
}
@Test
publicvoidinsertCategoryTest(){
category.setName("其他");
categoryMapper.insertCategory(category);
System.out.println("游戏类型添加成功");
}}以配置文件的方式整合02【任务实现】
6.单元测试执行测试用例,findCategoryTest方法执行成功,控制台显示查询结果。insertCategoryTest方法执行成功,查询数据库,可以看到游戏类型数据新增成功。PART03以注解的方式整合以注解的方式整合03【实例3-13】【任务要求】在SpringBoot项目中,以注解的方式整合MyBatis框架访问MySQL数据库,对数据表t_game(游戏表)进行增删改查等操作。数据库相关脚本如下:usespringboot_db;
DROPTABLEIFEXISTS`t_game`;
createTABLEt_game(
idINTauto_incrementprimarykeyCOMMENT'ID',
game_nameVARCHAR(24)NOTNULLCOMMENT'游戏名称',
category_idINTCOMMENT'游戏类型',
pricedoubleCOMMENT'价格',
descriptionvarchar(255)COMMENT'游戏描述',
pubdatedatetime(0)NOTNULLDEFAULT'2021-01-0100:00:00');以注解的方式整合03【任务实现】
在上一小节【项目3-12】的基础上,我们通过使用注解,实现游戏信息的数据库操作。项目依赖和全局配置文件同上。1.编写实体类在包.domain下,创建Game实体类,用作数据对象的封装。@Component
publicclassGame{
privateIntegerid;
privateStringgameName;//游戏名
privateIntegercategoryId;//游戏分类
privateDoubleprice;//游戏价格
privateStringdescription;//游戏描述
@DateTimeFormat(pattern="yyyy-MM-dd")
privateDatepubdate;……}以注解的方式整合03【任务实现】2.
编写Mapper接口
在包.mapper下,创建GameMapper接口,在接口方法上添加注解实现数据库的增删改查等基本操作。@Mapper
publicinterfaceGameMapper{
@Select("Select*fromt_game")
publicList<Game>findGames();
@Select("Select*fromt_gameWhereid=#{id}")
publicGamefindGameById(Integerid);
@Insert("INSERTINTO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA/T 2404-2026水环境污染刑事案件现场取证规范
- T/STSI 22-2021科技信息资源对象互操作规范
- T/SDHS 6-2025核设施用自吸式旋涡磁力泵
- T/CWAN 0115-2025钛及钛合金薄壁型材焊缝X射线数字成像检测
- T/CI 1134-2025隔离式纳米气凝胶聚苯乙烯光伏一体板外墙保温系统设计要求
- T/AHAASS 008-2024非规模畜禽养殖场(户)粪污资源化利用技术规范
- T/CNFIA 258-2026年份梅酒
- 2026学年江苏省南通市一年级数学期末高分通关冲刺押宝题(附答案)详细答案和解析
- 工业AI在阀门性能智能检测中的应用
- Photoshop 模拟考试试题(含详细答案解析)
- 《铁路机车车辆》课件 项目五 制动系统
- 26年秋八年级历史1-12课材料研读想一想课后活动答案
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 雨课堂学堂云在线《人像摄影(中国传媒大学 )》单元测试考核答案
- 2025秋期版国开电大本科《心理学》一平台形成性考核练习1至6在线形考试题及答案
- 2025年市教育局遴选试题及答案
- (2024年)七年级学生心理健康测试卷及答案
- 肥胖患者麻醉管理课件
- 2023年全省职业院校技能大赛高职学生组-区块链技术与应用-样题样本二
- 统编版高中政治必修1《中国特色社会主义》全册知识点复习提纲
- 研制输电线路铁塔接地引下线折弯装置
评论
0/150
提交评论