我在上海乐字节学习Java的第二天

第二天学习ssm框架,在网上搜过很多内容,在知乎上,各位大佬说ssh已经被抛弃了,所以今天的目标就是看完ssm入门网课,再多看几个项目,积累经验,把概念弄清楚之后,再去写代码应该方便许多 ,下面是我做的笔记:

SSM框架系列之一 MyBatis
MyBatis是什么?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
总而言之MyBatis是一个轻量级简化数据库操作的框架。

为什么要使用MyBatis?
为了解决JDBC存在的问题和简化数据库操作,MyBatis提供了较为优秀的解决方案;
例如:
1、 可以通过主配置文件配置连接池解决频繁创建、释放数据库连接造成的性能影响;
2、 动态SQL解决JDBC中硬编码问题:
a) Where条件改变;
b) 占位符位置变化;
3、 可通过包装类方便的获取数据库查询结果集对象;
4、 使Dao层业务逻辑和数据库访问分离更易维护和测试。

我能从这门课中学到什么?
1、 了解MyBatis架构;
2、 掌握MyBatis框架搭建、配置;
3、 使用MyBatis完成对数据库的增、删、改、查操作。
4、 掌握Mapper代理开发;
5、 掌握输入和输出映射;
6、 掌握多表关联查询;
7、 掌握动态SQL编写SQL语句;
8、 使用MyBatis Generator工具快速生成Bean、Interface、mapper.xml;
9、 掌握MyBatis+Spring开发(需要部分Spring知识);

MyBatis从哪获取?
MyBatis目前已经迁移到github上,访问下边网址可以获取到MyBatis的各种版本
https://github.com/mybatis/mybatis-3/releases

使用Jdbc开发小demo,观察Jdbc的问题;

开始学习MyBatis框架
MyBatis架构图:

在这里插入图片描述

Part.1 HelloMyBatis:搭建MyBatis HelloWorld项目
1、 下载MyBatis、创建项目、导包;
2、 创建测试用例,测试数据库、测试Bean对象;
3、 创建sqlMapConfig.xml主配置文件;
a) 导入主配置文件头:

<?xml version="1.0" encoding="UTF-8" ?>

4、 创建Mapper.xml映射文件;
a) 导入Mapper文件头:

<?xml version="1.0" encoding="UTF-8" ?>

5、 导入约束;

Part.2 使用MyBatis对表进行增、删、改、查操作;
1、 通过ID去查询一个用户
2、 通过用户名模糊查找匹配的用户列表
3、 完成添加用户
4、 修改用户
5、 根据id删除用户
6、 使用MyBatis 开发Dao层并测试;
7、 小结1:Jdbc与MyBatis开发的区别(MyBatis的优点),回顾MyBatis开发流程;

Part.3 MyBatis Mapper动态代理开发4+1 (4原则+1注意):
1、 接口方法名需要与mapper.xml的要调用的sql语句的id一致;
2、 接口的形参类型需要与mapper.xml parameterType一致;
3、 接口的返回值需要与mapper.xml resultType一致;
4、 mapper.xml中namespace要与接口的全包名一致;
5、 注意mapper动态代理开发中,根据返回值类型来自动选择;

Part.4 MyBatis 主配置文件SqlMapConfig.xml说明:(注意顺序)
1、 properties(读取配置文件)
2、 settings(全局配置参数)
3、 typeAliases(类型别名)
4、 typeHandlers(类型处理器)
5、 objectFactory(对象工厂)
6、 plugins(插件)

7、 environments(环境集合属性对象,与Spring框架整合后Say Good Bye)
a) environment(环境子属性对象)
b) transactionManager(事务管理)
c) dataSource(数据源)

8、 mappers(配置映射器位置)

Part.5 MyBatis输入和输出映射
1、 输入映射parameterType;
a) 基本类型;
b) 自定义对象;
c) 自定义包装类;

2、 输出映射resultType、resultMap;

a) resultType:
i. 基本类型;
ii. 自定义对象;
iii. 集合;

b) resultMap;
i. bean对象字段与数据表字段不匹配;
ii. 自定义包装类;
iii. 关联查询;

Part.6 MyBatis关联查询
1、 一对一;
2、 一对多;

在这里插入图片描述

Part.7 MyBatis动态sql:更方便的拼接sql语句

`1、 if标签 - 多条件查询,获取用户列表;
2、  where标签 - 解决if标签拼接字符串AND符号问题;
3、  trim标签 - 定制where标签的规则
4、  set标签 - 解决更新数据表时字符串拼接逗号”,”问题;
5、  foreach标签 – 如果需要使用IN查询多条相同数据,可以使用foreach遍历;
6、  sql标签 – 可以提取重复sql语句片段;` 

*   1
*   2
*   3
*   4
*   5
*   6


Part.8 MyBatis Generator(MBG):
作用:根据数据库表自动生成Bean对象、Java接口及SqlMapper.xml配置文件;
官方文档:http://www.mybatis.org/generator/
下载地址:https://github.com/mybatis/generator/releases

1、 搭建MBG项目;
a) 下载MBG核心包;
b) 创建java项目;
c) 从官方文档获取配置表、实例代码;
d) 导入依赖包;
2、 MBG配置以及根据数据库表生成所需文件(Bean、Interface、Mapper.xml);
3、 使用自动生成的文件操作数据库;

Part.9 MyBatis + Spring整合开发 (如果没学过Spring的同学,这部分内容等学习完Spring再来看)
目的:
a) 使用Spring容器用单例模式管理Mybatis的sqlSessionFactory;
b) 使用Spring管理连接池、数据源等;
c) 将Dao/Mapper动态代理对象注入到Spring容器中,使用时直接获取;

1、 Mybatis和Spring框架整合;
a) 导入所需的包;
b) 创建Mybatis主配置文件sqlMapConfig.xml;
c) 创建Spring主配置文件applicationContext.xml (以下是spring框架xml的头,需要导入约束);

`<?xml version="1.0" encoding="UTF-8"?>` 

*   1


d) 配置C3P0连接池;

`<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>` 

*   1
*   2
*   3
*   4
*   5
*   6


e) 读取db.properties;

`jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_mybatis
jdbc.user=root
jdbc.password=123` 

*   1
*   2
*   3
*   4


f) 配置sqlSessionFactory;
g) 测试:…

2、 Dao式开发;
3、 Mapper动态代理开发;
4、 Mapper动态扫描开发;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358