MyBatis作业,以下三个问题,任选两个作答
- 系统需要分层有哪些好处?
- 你在项目中用过哪种设计模式?结合业务场景给出使用这个设计模式的理由。
- 从网盘下载课程的建表脚本在本地建表,基于t_user、t_role和t_user_role三张表练习多多对查询。
系统需要分层有哪些好处?
1.职责分明,分层后高层只需要知道底层能实现的功能,不会关心实现的过程。
2.代码分离,易于扩展,且在系统扩展时,方便将每个模块转为微服务。
(mybatis将系统分为3层,且每层的每个模块全都独立。基础层,核心处理层,接口层。)
你在项目中用过哪种设计模式?结合业务场景给出使用这个设计模式的理由。这个设计模式在遵循什么设计原则?
1.单例模式 保证对象单一,全局不会变化的对象适合使用。但注意创建对象的代码考虑多线程安全问题。
2.工厂模式 不参加对象创建,在使用一个对象的时候不必要关心创建的过程,直接从工厂中拿出要使用的对象。
3.建造者模式,完全参加决定对象创建的结果,但是不会管在创建对象中有多复杂的过程,只是觉得重要的参数。
4.门面模式,只暴露出简单的入口,即可使用。无需关心后面复杂的实现形式。
5.适配器模式,将其他人的接口加上一层转接头,可以保证在其他人代码发生变化时,或者换使用的时,只需要更好转接头就可以。
6.模板模式,在多个实现类实现同一个接口的情况下,每个实现类要实现的接口不同,可以通过重写模板的制定方法确定跳过某些不需要的实现接口。
7.装饰模式,可以对实现同一个接口的不同实现类进行增强,从而轻易的组合,将增强模块实现随意拼接。
8.动态代理模式,动态代理模式可以,动态的创建同一个接口的不同实现类,而去执行接口的方法,在执行方法时也可以进行方法的增强。动态创建的接口以$proxy开头。
调用方法
@Testpublic void selectManyToMany(){SqlSession sqlSession = sqlSessionFactory.openSession();TUserMapper userMapper = sqlSession.getMapper(TUserMapper.class);List<TUser> users = userMapper.selectUserRole();for (int i = 0; i < users.size(); i++) {System.out.println(users.get(i).toString());if (users.get(i).getRoles()!=null){List<TRole> roles = users.get(i).getRoles();for (int j = 0; j < roles.size(); j++) {System.out.println(roles.get(j).toString());}}}}
xml文件代码
<resultMap type="TUser" id="userRoleInfo" extends="BaseResultMap"><collection property="roles" ofType="TRole" columnPrefix="role_"><result column="id" property="id" /><result column="Name" property="roleName" /><result column="note" property="note" /></collection></resultMap><select id="selectUserRole" resultMap="userRoleInfo">select a.id, a.userName,a.realName,a.sex,a.mobile,a.note,b.role_id,c.role_name,c.note role_notefrom t_user a,t_user_role b,t_role cwhere a.id = b.user_id AND b.role_id = c.id</select>
lison老师说:
分层优势
1.让代码维护性更高,每个层都有定位,每个层的每个组件脉络清晰
2.方便团队开发,提高协作开发。团队分工明确,开发人员专注提升。
3.提高系统伸缩性与性能,将每层调用接口明确,方便将逻辑分层改为物理分层,提高系统抗压性。
享学课堂学习笔记
MyBatis作业,以下三个问题,任选两个作答相关推荐
- ArcEngine C# GIS开发入门作业 (三)Ex04——实现地图的简单渲染和唯一值渲染
文章评论 写评论 sinat_37432938: 可以说非常有参考的意义,谢谢分享 4周前 #2楼 举报回复查看回复(1) domen_dragon 回复 sinat_37432938: 哈哈,谢谢夸 ...
- 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day6
<团队作业第三.第四周>五小福团队作业--Scrum 冲刺阶段--Day6 一.项目燃尽图 二.项目进展 [20172301郭恺第六天的进展] 第五天完成的任务: 点击牌会抬起.选中牌的图 ...
- SpringBoot中关于Mybatis使用的三个问题
SpringBoot中关于Mybatis使用的三个问题 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8495453.html 原本是要讲讲PostgreSQL ...
- c语言两个字符串比较,将两个字符串s1和s2比较,如果s1s2,作业 - 编一个程序,将两个字符串s1和s2比较,如果.doc...
作业 - 编一个程序,将两个字符串s1和s2比较,如果 作业(第一次) 求下面表达式的值: x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (float)(a+b)/2+( ...
- 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数
第二次作业 题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整 ...
- 习题 4.15 用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母。用#define命令来控制是否要译成密码。
C++程序设计(第三版) 谭浩强 习题4.15 个人设计 习题 4.15 用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出:一为将字母变成其下一字母.(如'a'变成'b'· ...
- 教育部统考课程-计算机,教育部统考课程—《计算机应用基础》作业练习三.doc...
文档介绍: 1 教育部统考课程-<计算机应用基础>课程作业练****三 Word 文字编辑一.单项选择题 1.Word 文档的扩展名是(). A.BAS B.DOC C.BMP D.XLS ...
- 任选两个自然数,它们互质的概率是多少?
任选两个自然数,它们互质的概率是多少? 它就是s=2s = 2s=2时欧拉乘积公式右边的连乘的倒数,因此它等于s=2s = 2s=2时欧拉乘积公式左边的连加的倒数,即1/ζ(2)1/ζ(2)1/ζ(2 ...
- 计算机应用怎么样多项选择,【2017年整理】12春学期《计算机应用基础》在线作业第三次多项选择.doc...
[2017年整理]12春学期<计算机应用基础>在线作业第三次多项选择 二.多选题(共?30?道试题,共?30?分.) HYPERLINK "/StudentCenter/OnLi ...
最新文章
- Python函数细节:多数量参数、强制参数传递、返回多值、匿名/内联函数
- http请求post,返回excel文件,并接收
- 转:基于TLS1.3的微信安全通信协议mmtls介绍
- 文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?
- Spring Boot 项目打成 .exe 程序,实战来了!
- Study From DevOps 学习交流会议
- 60套漂亮的的免费 PSD 界面设计元素包资源(系列二)
- Python小例子,太走心~
- 简易购物车实体类的设计
- java 解密pdf_Java 加密和解密 PDF
- 雅思N、NG专项(目标是保证一个都不错)
- maven-jar-plugin 插件打包jar配置
- Spark 概述以及与Hadoop的关系
- PHP+MySQL实现上传图片的显示
- 每天都是新开始之:Android 活动介绍与使用
- 计算机专硕_平均分369分!这所985大学计算机专硕!
- 计算机科学导论第二版(佛罗赞)-读书笔记
- 产品经理相关经验以及基础知识
- cdc跨时钟域处理-结绳握手法
- 辉煌优配|增持回购升温 竞购同行股权 券商板块估值有望持续提升