第二天学习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的各种版本 github.com/mybatis/myb…
使用Jdbc开发小demo,观察Jdbc的问题;
开始学习MyBatis框架 MyBatis架构图:
在这里插入图片描述
Part.1 HelloMyBatis:搭建MyBatis HelloWorld项目 1、 下载MyBatis、创建项目、导包; 2、 创建测试用例,测试数据库、测试Bean对象; 3、 创建sqlMapConfig.xml主配置文件; a) 导入主配置文件头:
4、 创建Mapper.xml映射文件; a) 导入Mapper文件头:
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配置文件; 官方文档:www.mybatis.org/generator/ 下载地址:github.com/mybatis/gen…
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动态扫描开发;