1.常用框架
1.SpringMVC
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架
模型(Model):封装了应用程序的数据和一般他们会组成的POJO。
视图(View):是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。
控制器(Controller):负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。
执行流程:1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用处理器映射器HandlerMapping。 3.处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。 4.DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作 5.执行处理器Handler(Controller,也叫页面控制器)。 6.Handler执行完成返回ModelAndView 7.HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet 8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9.ViewReslover解析后返回具体View 10.DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)。 11.DispatcherServlet响应用户。
2.Spring
IOC容器
IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装。在Spring中BeanFactory是IOC容器的实际代表者。
AOP
简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系。
3.Mybatis
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
总体流程:
(1)、加载配置并初始化
触发条件:加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)、接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)、处理操作请求
触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)、返回处理结果将最终的处理结果返回
MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。
以上就是Java常用的框架有哪些的详细内容。
由于本人常用Springboot+Mybatis Plus框架写程序,所以详细介绍
Springboot+Mybatis Plus
1.首先是创建程序
2.创建完毕后建立连接
3.建立用于自动生成的类
public class Gen {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/crm?serverTimezone=Asia/Shanghai",
"root", "123456")
.globalConfig(builder -> {
builder.author("XX") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("F:/Java/crm/src/main/java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.hqyj.crmdemo");// 设置父包名
//.moduleName("user") // 设置父包模块名
//.pathInfo(Collections.singletonMap(OutputFile.xml, "F:/Java/框架/crm")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {//实体表全部
builder.addInclude("user","sale_chance","role","orders","dev_plan","customer_loss","custmer",
"contact","business_record") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
这个类方便我们后续自动生成对应数据库的实体类等,然后运行程序
运行过后自动生成过后的效果图如下
记到添加要扫描的包在哪个目录下
4.然后就可以在service包下写自己需要的业务方法
这里的各种增删改查的方法调用的是框架封装好的方法
总结
整个框架部分的学习大概就是如上所示,框架部分能够更快的让我实现一些简单的业务流程,所以使用框架来编写程序对于程序员来说相对轻松很多,如果框架封装的方法满足不了需求,可以自己重写方法来满足需求。