阿里巴巴 用什么java框架

阿里巴巴 用什么java框架,第1张

1、现在的大公司都是有很多积累的,他们都拥有适合自己的框架技术,这些全靠积累。所以阿里巴巴的主流Java框架是自己写的,同时结合了大量open source的资源。2、WEB层 —— 使用webx框架。主要利用velocity模板技术来展现页面。3、业务层 —— 主要使用command模式实现。WEB层通过command dispatcher的调用来使用业务逻辑。4、数据访问层 —— 使用DAO(Data Access Object)模式。底层使用iBatis来访问数据库。数据采用的是Oracle。数据库 *** 作的SQL语句需要你手工书写相关的SQL代码(对于复杂的SQL语句需要通过DBA的评审)。5、开发工具,采用IDE和命令行相结合的模式。在命令行上,我们用antx工具来组织项目、build项目、发布项目。但我们多数时间会在eclipse集成环境上,开发、调试应用。6、版本控制,采用了Subversion。但部分项目因为历史的原因,暂时使用CVS,将来必然会迁移到Subversion上。Subversion有很多种 *** 作方式:通过命令行、通过TortoiseSVN集成工具、通过WEB、通过Eclipse插件。总结:在所有层次上,他们都广泛使用了Spring framework。因此您需要对Spring有一定的了解才行。阿里面试时非常考验基础知识的,因为他们有自己的技术积累,框架技术已经趋于成熟,所以面试都是一些基础知识与算法知识。现在的阿里技术或许已经更加成熟,

使用fluent mybatis可以不用写具体的xml文件,通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。

不再需要在Dao中组装查询或更新 *** 作,在xml或mapper中再组装参数。

那对比原生Mybatis, Mybatis Plus或者其他框架,FluentMybatis提供了哪些便利呢?

需求场景设置

我们通过一个比较典型的业务需求来具体实现和对比下,假如有学生成绩表结构如下:

create table `student_score`

(

id bigint auto_increment comment '主键ID' primary key,

student_id bigint not null comment '学号',

gender_man tinyint default 0 not null comment '性别, 0:女1:男',

school_term int null comment '学期',

subject varchar(30) null comment '学科',

score int null comment '成绩',

gmt_create datetime not null comment '记录创建时间',

gmt_modified datetime not null comment '记录最后修改时间',

is_deleted tinyint default 0 not null comment '逻辑删除标识'

) engine = InnoDB default charset=utf8

现在有需求:

统计2000年三门学科('英语', '数学', '语文')及格分数按学期,学科统计最低分,最高分和平均分, 且样本数需要大于1条,统计结果按学期和学科排序

我们可以写SQL语句如下

select school_term,

subject,

count(score) as count,

min(score) as min_score,

max(score) as max_score,

avg(score) as max_score

from student_score

where school_term >= 2000

and subject in ('英语', '数学', '语文')

and score >= 60

and is_deleted = 0

group by school_term, subject

having count(score) >1

order by school_term, subject

那上面的需求,分别用fluent mybatis, 原生mybatis 和 Mybatis plus来实现一番。

三者实现对比

使用fluent mybatis 来实现上面的功能

图片

具体代码:

https://gitee.com/fluent-mybatis/fluent-mybatis-docs/tree/master/spring-boot-demo/

我们可以看到fluent api的能力,以及IDE对代码的渲染效果。

换成mybatis原生实现效果

1.定义Mapper接口

public interface MyStudentScoreMapper {

List<map >summaryScore(SummaryQuery paras)</map

}

2.定义接口需要用到的参数实体 SummaryQuery

@Data

@Accessors(chain = true)

public class SummaryQuery {

private Integer schoolTerm

private List subjects

private Integer score

private Integer minCount

}

3.定义实现业务逻辑的mapper xml文件

select school_term,subject,count(score) as count,min(score) as min_score,max(score) as max_score,avg(score) as max_scorefrom student_scorewhere school_term >= #{schoolTerm}and subject in#{item}and score >= #{score}and is_deleted = 0group by school_term, subjecthaving count(score) >#{minCount}order by school_term, subject

4.实现业务接口(这里是测试类, 实际应用中应该对应Dao类)

@RunWith(SpringRunner.class)

@SpringBootTest(classes = QuickStartApplication.class)

public class MybatisDemo {

@Autowired

private MyStudentScoreMapper mapper

@Test

public void mybatis_demo() {

// 构造查询参数

SummaryQuery paras = new SummaryQuery()

.setSchoolTerm(2000)

.setSubjects(Arrays.asList("英语", "数学", "语文"))

.setScore(60)

.setMinCount(1)

List<map >summary = mapper.summaryScore(paras)</map

System.out.println(summary)

}

}

总之,直接使用mybatis,实现步骤还是相当的繁琐,效率太低。那换成mybatis plus的效果怎样呢?

下一篇 阿里开源的 ORM 框架!它是否能抢得过MybatisPlus市场?(下)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6803679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存