MyBatis作业,以下三个问题,任选两个作答

  1. 系统需要分层有哪些好处?
  2. 你在项目中用过哪种设计模式?结合业务场景给出使用这个设计模式的理由。
  3. 从网盘下载课程的建表脚本在本地建表,基于t_user、t_role和t_user_role三张表练习多多对查询。

系统需要分层有哪些好处?
1.职责分明,分层后高层只需要知道底层能实现的功能,不会关心实现的过程。
2.代码分离,易于扩展,且在系统扩展时,方便将每个模块转为微服务。
(mybatis将系统分为3层,且每层的每个模块全都独立。基础层,核心处理层,接口层。)

你在项目中用过哪种设计模式?结合业务场景给出使用这个设计模式的理由。这个设计模式在遵循什么设计原则?
1.单例模式 保证对象单一,全局不会变化的对象适合使用。但注意创建对象的代码考虑多线程安全问题。
2.工厂模式 不参加对象创建,在使用一个对象的时候不必要关心创建的过程,直接从工厂中拿出要使用的对象。
3.建造者模式,完全参加决定对象创建的结果,但是不会管在创建对象中有多复杂的过程,只是觉得重要的参数。
4.门面模式,只暴露出简单的入口,即可使用。无需关心后面复杂的实现形式。
5.适配器模式,将其他人的接口加上一层转接头,可以保证在其他人代码发生变化时,或者换使用的时,只需要更好转接头就可以。
6.模板模式,在多个实现类实现同一个接口的情况下,每个实现类要实现的接口不同,可以通过重写模板的制定方法确定跳过某些不需要的实现接口。
7.装饰模式,可以对实现同一个接口的不同实现类进行增强,从而轻易的组合,将增强模块实现随意拼接。
8.动态代理模式,动态代理模式可以,动态的创建同一个接口的不同实现类,而去执行接口的方法,在执行方法时也可以进行方法的增强。动态创建的接口以$proxy开头。

调用方法

@Test
    public 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_note
		from t_user a,
		     t_user_role b,
		     t_role c
		where a.id = b.user_id AND 
		      b.role_id = c.id
     </select>

lison老师说:
分层优势
1.让代码维护性更高,每个层都有定位,每个层的每个组件脉络清晰
2.方便团队开发,提高协作开发。团队分工明确,开发人员专注提升。
3.提高系统伸缩性与性能,将每层调用接口明确,方便将逻辑分层改为物理分层,提高系统抗压性。

享学课堂学习笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值