做英文网站用目录还是子域名,淄博个人网站建设,好用的土木建筑网站,网站做树状结构有什么作用#x1f6eb;更多ssm知识见SSM_面向CRUD编程专栏 #x1f695;本博客总结自黑马程序员的ssm框架视频 #x1f692;博主对于该知识尚在学习阶段 #x1f684;如果发现存在问题请毫不吝啬的指出 #x1f680;#x1f680;扎哇太枣糕的博客主页#x1f680;#x1f680; 目… 更多ssm知识见SSM_面向CRUD编程专栏 本博客总结自黑马程序员的ssm框架视频 博主对于该知识尚在学习阶段 如果发现存在问题请毫不吝啬的指出 扎哇太枣糕的博客主页 目录
1 MyBatis初识
1.1 MyBatis的开发步骤
1.2 mapper映射文件
1.3 核心配置文件
2 MyBatis的dao层(mapper层)实现
2.1 代理开发方式
2.2 映射文件进阶之动态sql
2.3 核心配置文件进阶
3 MyBatis多表操作
4 MyBatis实现注解开发 1 MyBatis初识 下面都是官方的解答有些过于的生硬按我个人理解就是MyBatis框架就是用来代替jabcTmplate的一个巨巨巨好用的持久层框架其底层封装的东西比较多所以开发起来就比较快速。MyBatis是一个基于Java的持久层框架它的内部封装了jdbc使得开发者只需要关注于SQL语句本身而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。MyBatis通过xml或者注解的方式将要执行的各种statement配置起来并通过Java对象和statement中的SQL的动态参数进行映射生成需要执行的SQL语句。最后MyBatis框架执行SQL语句并将结果映射成Java对象并返回采用ORM(将实体类与数据库表进行映射)思想解决了实体与数据库映射的问题对jdbc进行封装屏蔽了jdbc底层访问的细节直接完成数据库持久化操作。
1.1 MyBatis的开发步骤 MyBatis后期结合spring框架进行开发还是有一些小不同的以下的开发步骤知识为了快速入门而学习由简入难的学习步骤更加有利于知识点进行掌握。 第一步导入相关依赖 第二步创建实体类 第三步创建mapper映射文件 第四步创建核心配置文件 测试类及结果 1.2 mapper映射文件 映射文件包含的内容 增删改查操作 原始的jdbc默认事务完成之后进行提交MyBatis的事务默认完成之后不提交。所以当数据进行增删改操作时必须使用sqlsession.commit()进行手动提交。或者调用openSession方法创建sqlSession对象的时候传参为true意味着每次更改自动提交。 1.3 核心配置文件 environments标签 transactionManager标签的Type值 JDBC直接使用JDBC的提交和回滚设置依赖于从数据源得到的连接来进行事务的管理MANAGED几乎不用了解即可dataSource标签的Type值 UNPOOLED不使用连接池数据库的连接随着使用创建和释放POOLED使用连接池创建一次随用随取JNDI几乎不用了解即可 Properties标签 用于加载外部的properties文件获得数据源参数信息${}进行引用配合上面的DataSource标签进行使用 typeAliases标签 为java类定义一个别名这样的话就可以在mapper映射文件中使用别名指定参数类型和结果类型了方便操作。 ⚠ 核心配置文件中那么多标签是有顺序的如果不按照规定的顺序配置标签的话就会导致文件报错 ⚠ 除了自定义别名以外MyBatis框架已经为一些常用类型设置好了别名比如int、string、long、double……… mappers标签 用于加载mapper映射文件暂时只用学习相对路径加载的这一种 2 MyBatis的dao层(mapper层)实现
2.1 代理开发方式 Mapper代理开发方式只需要编写Mapper接口由MyBatis框架根据接口中定义的方法通过反射创建出相应的代理对象和接口的实现类方法。要想完成以上开发需要遵循以下规范
接口的全限名和mapper映射文件中的namespace相同接口中方法名和mapper映射文件中的每个mapper标签的子标签的id相同接口中方法的参数类型和mapper映射文件中的每个mapper标签的子标签的parameterType相同接口中方法的返回值和mapper映射文件中的每个mapper标签的子标签的resultType相同开发步骤 代理开发最主要的就是上面的四个规范只要将理解并完成规范之后开发就会异常的快且方便 第一步导依赖坐标 第二步编写实体类 第三步编写核心配置文件和数据源配置的properties文件 第四步对比着接口配置mapper映射文件 测试类及其测试结果 2.2 映射文件进阶之动态sql 上面的这种SQL语句写法相当一一个精确匹配但凡三个参数少任意一个都会造成这么一个问题就是没有匹配的结果输出。但是一般的业务情况下如果参数少了一个的话就认为这个参数可以是任意值也就相当于模糊匹配的概念。要想完成这个功能就需要使用动态SQL语句也就是使用标签进行。
where和if标签 if标签实际上就是对test属性值的条件判断只有当条件满足了才会将标签内部的语句拼接到上面的select语句中如果都不满足就会查询所有有几个条件满足都会拼接到where条件限制where条件限制不固定就是动态SQL语句的由来。
foreach标签 foreach标签实际上就是可以拼接SQL语句有前后的SQL语句成分有中间的字段值(集合或数组)和分隔符
sql片段抽取标签 2.3 核心配置文件进阶
typeHandlers标签 一些情况下我们会有这样的一个业务需求java中的数据类型与要存放到数据库中的类型不一致或者数据库中的数据类型和我们需要获取的类型不一致这时候就需要我们使用自定义的类型处理器了。typeHandlers标签就是用于在核心配置文件中对自定义的类型处理器进行注册使用于是自定义类型处理器的使用就有两个比较重要的步骤定义处理器类和核心配置文件注册。 下面的案例就是java中是一个Date类型的数据需要将date转成时间毫秒值存储到数据库中从数据库中取出时还必须是Date类型。 定义处理器类 核心配置文件注册 plugins标签 MyBatis可以使用第三方的插件进行功能的拓展plugins标签就是对拓展功能的注册 比如说使用分页插件查询数据库信息 第一步导入分页插件的相关依赖 第二步核心配置文件配置分页插件第三步测试类中设置分页参数并获取相关参数 核心配置文件中的标签配置是遵循以下顺序的如果顺序改变的话会导致报错且红框框住的是相比较而言重要的且前面都讲过
3 MyBatis多表操作 表与表之间有三种对应关系一对一、一对多、多对多加下来让我们依次学习一下这三种关系该的表查询如何操作
一对一
一张订单唯一对应着一个用户 第一步首先要有两个表和对应的实体类两个表之间还要有一个外键进行表之间的连接 第二步对应着mapper接口写mapper映射文件 第三步配置核心配置文件 第四步测试及结果 ⚠ 还有一种映射关系的配置方式使用association标签可读性更加好 多对一
一个用户对应着多张订单 第一步首先要有两个表和对应的实体类两个表之间还要有一个外键进行表之间的连接。仔细看这个案例使用的表还是那两张表但是实体类就不是上一个案例的实体类了。 第二步对应着mapper接口写mapper映射文件 第三步配置核心配置文件这里的加载mapper映射文件和上一个案例不一样其他配置都一样 第四步测试及结果这里只查询用户id为1的订单查询出来的所有订单在后面进行拼接无法全部展示 多对多
一个用户扮演多个角色一个角色被多个用户扮演 第一步首先要有三个表和除了连接表之外的实体类两个表之间还要有一个连接表进行角色表和用户表之间的连接。 第二步对应着mapper接口写mapper映射文件 第三步配置核心配置文件这里的别名role1不一样其他配置都一样 第四步测试及结果 学到这MyBatis基本上已经够用了下面的注解开发只做了解可以不学注解开发与xml配置开发的不一样的地方就是注解开发使用注解将mapper映射文件取而代之在核心配置文件里mapper映射文件的加载换成包下注解扫描。
4 MyBatis实现注解开发
简单的CRUD注解开发 第一步创建表和实体类、导入依赖 都不再演示 第二步配置核心配置文件加载配置文件、配置数据库、扫描包下注解 第四步接口方法上加注解省去mapper映射文件 第五步和xml开发一样直接调用方法 多表查询的注解开发
一对一
一张订单唯一对应着一个用户 第一步创建user、order表和实体类、导入依赖 都不再演示 第二步配置核心配置文件加载配置文件、配置数据库、扫描包下注解和上面的一样不再演示 第三步接口方法上加注解省去mapper映射文件 第四步和xml开发一样直接调用方法 ⚠ 还有一种注解开发方法和下面要学习的一对多的开发一样提前了解一下 一对多
一个用户对应着多张订单 第一步创建user、order表和实体类、导入依赖 都不再演示 第二步配置核心配置文件加载配置文件、配置数据库、扫描包下注解和上面的一样不再演示 第三步一对多和一对一的拓展方法一样需要借助其它方法进行查询在rolemapper创建一个通过id查询的方法 第四步usermapper接口方法上加注解省去mapper映射文件 第五步和xml开发一样直接调用方法 多对多
一个用户扮演多个角色一个角色被多个用户扮演 第一步创建user、sys_user_role、sys_role表和User、Role实体类、导入依赖 都不再演示 第二步配置核心配置文件加载配置文件、配置数据库、扫描包下注解 第三步一对多和一对一的拓展方法一样需要借助其它方法进行查询在ordermapper创建一个通过id查询的方法 第四步usermapper接口方法上加注解省去mapper映射文件 第五步和xml开发一样直接调用方法 至此SSM框架的所有知识点都已经到达入门级别了接下来就是将前面学的所有的知识点或者说框架进行一个整合形成一个完整的ssm知识体系了。整合完成之后就是进行一个ssm框架项目的实操让我们一起加油吧 上一篇【SSM面向CRUD编程专栏 7】springAop 事务控制_
下一篇【SSM面向CRUD编程专栏 9】SSM框架整合