开心一笑

【风水轮流转,你要相信,那些曾经骑在你头上拉屎的,总有一天会换成另一拨人。】

新书购买

戳图购买 >>>

10.1 MyBatis介绍

10.1.1 MyBatis概述

MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

10.2 集成MyBatis

10.2.1 引入依赖

在Spring Boot中集成Mybatis,首先需要在pom.xml文件中引入所需的依赖,具体代码如下:

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>

10.2.2 添加MyBatis配置

在pom文件添加Mybatis所需的依赖之后,我们需要在application.properties文件中添加如下的配置信息:

### mybatis配置
mybatis.mapper-locations=classpath:/mappers/*Mapper.xml
mybatis.type-aliases-package=com.example.demo.dao

mybatis.mapper-locations:Mapper资源文件存放的路径。
mybatis.type-aliases-package:Dao接口文件存放的目录。

10.2.3 Dao层和Mapper文件开发

application.properties配置添加完成之后,我们需要根据MyBatis配置添加对应的文件夹。首先,我们需要在/src/main/java/com.example.demo.dao目录下新建AyUserDao接口,这样Spring Boot启动时候,就可以根据application.properties配置mybatis.type-aliases-package,找到AyUserDao接口。AyUserDao具体代码如下:

/*** 描述:用户DAO* @author Ay* @date   2017/11/20.*/
@Mapper
public interface AyUserDao {/***  描述:通过用户名和密码查询用户* @param name* @param password*/AyUser findByNameAndPassword(@Param("name") String name,
@Param("password") String password);}

@Mapper:重要注解, MyBatis根据接口定义与Mapper文件中的SQL语句动态创建接口实现。
@Param:注解参数,在Mapper.xml配置文件钟,可以采用#{}的方式对@Param注解括号内的参数进行引用。
findByNameAndPassword:该方法可以通过用户名和密码查询用户。
然后我们在/src/main/resources目录下新建AyUserMapper.xml文件,Spring Boot在项目启动时候,会根据application.properties配置mybatis.mapper-locations找到该文件。AyUserMapper具体代码如下:
<?xml version="1.0" encoding="UTF-8" ?>

    <resultMap id="UserResultMap" type="com.example.demo.model.AyUser"><id column="id" property="id" jdbcType="VARCHAR"/><result column="name" property="name" jdbcType="VARCHAR"/><result column="password" property="password" jdbcType="VARCHAR"/><result column="mail" property="mail" jdbcType="VARCHAR"/></resultMap><select id="findByNameAndPassword" resultMap="UserResultMap" parameterType="String">select * from ay_user u<where>u.name = #{name}and u.password = #{password}</where></select></mapper>

< mapper>标签:该标签的namespace属性用于绑定绑定Dao接口的。
< select>标签:用来编写select语句,映射查询语句。select标签有几个重要的属性,比如:resultMap
< resultMap>:映射管理器resultMap,是Mybatis中最强大的工具,描述了如何将数据库查询的结果集映射到Java对象,并管理结果和实体类之间的映射关系。
AyUserDao代码开发完成之后,我们在之前开发好的AyUserService接口类中添加添加接口findByNameAndPassword。具体代码如下:

/*** 描述:用户服务层接口* @author 阿毅* @date   2017/10/14*/
public interface AyUserService {//此处省略代码AyUser findByNameAndPassword(String name, String password);}

然后,我们在AyUserServiceImpl类中实现findByNameAndPassword接口,具体代码如下:

/*** 描述:用户服务层实现类* @author 阿毅* @date   2017/10/14*/
//@Transactional
@Service
public class AyUserServiceImpl implements AyUserService {//此处省略代码@Resourceprivate AyUserDao ayUserDao;@Overridepublic AyUser findByNameAndPassword(String name, String password) {return ayUserDao.findByNameAndPassword(name, password);}
}

10.2.4 测试

代码开发完成之后,我们在MySpringBootApplicationTests类下添加测试方法,具体代码如下:

@Resource
private AyUserService ayUserService;@Test
public void testMybatis(){AyUser ayUser = ayUserService.findByNameAndPassword("阿毅", "123456");logger.info(ayUser.getId() + ayUser.getName());}

执行测试用例,在Intellij IDEA控制台可以看到相应的打印信息。


读书感悟

来自《知识的边界》

  • 足够的宽度本身就成为了一种深度。
  • 互联网就是一堆未经把门的谣言、流言与谎言的集合。它把我们的注意力切割成碎片,终结了那些长线的深入的思考。
  • 网络能够让我们更聪明,只要我们自己想要更聪明。
  • 新的过滤技术是毁灭性的,尤其是在知识的权威性这一点上更是如此。一些旧式的知识机制,比如报纸、百科全书、教材等,其权威性来自于它们为其他人过滤信息这一事实。而如果我们的社交网络是我们新的过滤器,那这种权威就从遥远的专家那里,转移到了我们所熟悉、所喜欢、所尊重的人所构成的这个网络上。
  • 传统媒体太容易去夸大那些阶段性的、暂时性的发现,但媒体给人塑造的科学印象则是科学是一种肯定无疑的正确观点的集合。但是网络化的科学则完全不同。这个科学无比庞大,永远存在分歧,讲究实用,借由命名空间来协调差异,而且永远不确定。一句话,网络化的科学看起来更像是科学家眼中的科学,而非媒体眼中的科学。

经典故事

在一次讨论会上,一位著名的演说家没讲一句开场白,手里却高举着一张20美元的钞票。面对会议室里的200个人,他问:“谁要这20美元?”一只只手举了起来。他接着说:“我打算把这20美元送给你们中的一位,但在这之前,请准许我做一件事。”他说着将钞票揉成一团,然后问:“谁还要?”仍有人举起手来。他又说:“那么,假如我这样做又会怎么样呢?”他把钞票扔到地上,又踏上一只脚,并且用脚碾它。尔后他拾起钞票,钞票已变得又脏又皱。“现在谁还要?”还是有人举起手来。

【无论我如何对待那张钞票,你们还是想要它,因为它并没贬值,它依旧值20美元。人生路上,我们会无数次被自己的决定或碰到的逆境击倒、欺凌甚至碾得粉身碎骨。我们觉得自己似乎一文不值。但无论发生什么,或将要发生什么,在上帝的眼中,你们永远不会丧失价值。在他看来,肮脏或洁净,衣着齐整或不齐整,你们依然是无价之宝。】


大神文章


其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎鼓励,点赞、顶、欢迎留下宝贵的意见、多谢支持!

第10章 集成MyBatis相关推荐

  1. Spring集成MyBatis框架

    Spring集成MyBatis框架 Java在写数据库查询时,我接触过四种方式: 1.纯Java代码,引用对应的数据库驱动包,自己写连接与释放逻辑(可以用连接池) 这种模式实际上性能是非常不错的,但是 ...

  2. springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)

    springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三) 例: package com.example.demo.service;import com.exa ...

  3. springboot集成mybatis源码分析-启动加载mybatis过程(二)

    springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...

  4. 第10章 springboot是什么

    第II部分 Kotlin集成 SpringBoot 项目开发实战 第10章 springboot是什么 10.1 简介 10.2 自动配置原理 10.3 常用starter 10.4 actuator

  5. list mybatis批量保存_springboot2.x基础教程:集成mybatis最佳实践

    前面文章介绍过SpringBoot结合Jpa实现对数据库的操作.今天介绍下SprigBoot集成Mybatis的相关知识点.     Mybatis作为一个半自动化的ORM框架,根据条件动态拼接SQL ...

  6. 【高校宿舍管理系统】第二章 整合Mybatis和写CRUD的基本流程以及使用代码生成器生成Mapper等相关代码

    第二章 整合Mybatis和写CRUD的基本流程以及使用代码生成器生成Mapper等相关代码 提示:本博客个为人独立博客,不是权威,仅供参考!所有思路只做交流之用!如有不足之处,望各位在评论区友善指正 ...

  7. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  8. Spring Boot 集成MyBatis

    Spring Boot 集成MyBatis Spring Boot 系列 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring ...

  9. SpringBoot(13)--- 数据库操作(集成MyBatis)

    SpringBoot 数据库操作(集成MyBatis) Spring对持久化的支持,不单只支持JDBC,为各种支持的持久化技术都提供了简单的模板和回调: ORM持久化技术 模板类 JDBC(JdbcT ...

最新文章

  1. 使用Xshell密钥认证机制远程登录Linux
  2. [CTSC2018]混合果汁
  3. python定义一个类和子类_Python面向对象class类属性及子类用法分析
  4. C++找出数组中的第一个非重复整数的算法(附完整源码)
  5. App设计灵感之十二组精美的天气预报App设计案例
  6. 【TensorFlow-windows】keras接口——BatchNorm和ResNet
  7. matlab画线不同颜色_怎样画线框图才有意义?
  8. Swift UI开发初探
  9. [mysql] Incorrect string value: '\xE4\xBC\x9A\xE5\x91\x98' for column 'name' at row 1
  10. jdk list接口源码解析
  11. 【Unity3D】Photon环境搭建
  12. 原 《老路用得上的商学课》76-80学习笔记
  13. linux tomcat startup.sh,Tomcat 安装教程与启动-startup.sh
  14. UFS系列十:UFS电源管理
  15. python文件修改
  16. java实现excel合并的单元格自动换行自动调高
  17. [独立游戏][纳税]个人独立游戏缴税纳税相关问题
  18. 技术答疑 什么是音高、音色、音调?
  19. 路由器连接路由器设置方法
  20. requestLayout() improperly called by android.widget.TextView

热门文章

  1. 让用户无法在微信中举报的代码
  2. SpringBoot无法引入@RunWith注解解决方法
  3. pythonwhile循环语句_Python While循环语句
  4. 命令 / Linux / apt remove 和 apt purge 的区别
  5. 微信做图小程序有哪些_有哪些微信小程序值得推荐?
  6. dhcp计算机毕业论文,计算机网络毕业设计(论文)dhcp在校园网中的应用.pdf
  7. 3d智慧城市线上3d模型展示可视化平台
  8. Java Web 开发 从入门到入?
  9. 音视频格式大全:stream type
  10. 自动擦窗机器人作文_清洁机器人作文(六篇)