mvc: web开发中,使用MVC架构模式。m:数据,v:视图,c:控制器。
c控制器:接受请求,调用service对象,显示请求的处理结果。当前使用servlet作为控制器。
v视图:现在使用jsp,HTML,css,js。显示请求的处理结果,把m中数据显示出来
m数据:来着数据库MySQL,来自文件,来自网络。
MVC作用:
1)实现解耦
2)让MVC各负其职
3)使的系统扩展更好,更容易维护。
三层架构:
1.界面层(视图层):接收用户的请求,调用service,显示请求的处理结果的。包含了jsp,HTML,servlet等对象, 对应包controller。
2.业务逻辑层:处理业务逻辑,使用算法处理数据。把数据返回界面层。对应的是service包和包中的很多的XXXService类。
3.持久层(数据库访问层):访问数据库,或者读取文件,访问网络,对应的包是dao。dao包中包含了很多的XXXDao。
2.三层架构请求的处理流程用户发起请求—>界面层—>业务逻辑层----->持久层------>数据库
3.为什么要使用三层1.结构清晰,耦合度低,各层分工明确。
2.可维护性高,可扩张性高
3.有利于标准化
4.开发人员可以只关注整个结构中的其中某一层的功能实现
5.有利于各层逻辑的复用
4.三层架构模式和框架每一层对应着一个框架
1)界面层-- SpringMVC框架
2)业务层–Spring框架
3) 持久层–Mybatis框架
5.Mybatis框架 Mybatis是一个优秀的基于Java的持久层框架,内部封装了jdbc,开发者只需要关注sql语句本身,而不需要处理加载驱动、创建连接、创建statement、关闭连接。
6.框架1)什么是框架(framework)
框架:就是一个软件,完成了部分的功能。软件中的类和类之间的方法调用都已经规定好了。通过这些可以完成某些功能。框架看做是模板。
框架是可以升级的、改造的。框架是安全的。
框架是对某一方面有用的,不是全能的。
7.框架解决的问题1)框架能实现技术的整合。
2)框架能够提高开发效率,降低难度。
8. Mybatis-plus配置日志文件第一种:
mybatis-plus:
mapper-locations: classpath:mybatis/mapper/*.xml
configuration:
#配置日志文件
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
第二种:
@Bean("sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory() throws Exception {
// 导入mybatissqlsession配置
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
// 指明数据源
sessionFactory.setDataSource(multipleDataSource(dataSource0(), dataSource1(), dataSource2()));
// 指明mapper.xml位置(配置文件中指明的xml位置会失效用此方式代替,具体原因未知)
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/**Mapper.xml"));
// 指明实体扫描(多个package用逗号或者分号分隔)
sessionFactory.setTypeAliasesPackage("gsa.geographic.system.entity");
// 导入mybatis配置
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setJdbcTypeForNull(JdbcType.NULL);
configuration.setMapUnderscoreToCamelCase(true);
configuration.setCacheEnabled(false);
// 配置打印sql语句
configuration.setLogImpl(StdOutImpl.class);
sessionFactory.setConfiguration(configuration);
// 添加分页功能
sessionFactory.setPlugins(new Interceptor[]{
paginationInterceptor()
});
// 导入全局配置
sessionFactory.setGlobalConfig(globalConfiguration());
return sessionFactory.getObject();
}
9.原生分页(IPage)
Pagepage=new Page(pageNum,pageSize); IPage iPage=loginMapper.selectLoginInfo(page,searchInfo);
注意事项:
- Dao/Mapper层返回数据格式为IPage 对象
- 持久层方法Page必须为第一个参数,不然会报异常
- controller层
@PostMapping("get-leave-info")
public Response getLeaveInfo(@RequestBody LeaveEntity entity){
if ("".equals(entity.getPageNum()) || null == entity.getPageNum() || null == entity.getPageSize())
return ResponseUtil.failed(StatusCode.FAIL_PAGE);
IPage iPage=leaveService.getLeaveInfo(entity);
return ResponseUtil.success(iPage);
}
- Service-impl
@Override
public IPage getLeaveInfo(LeaveEntity entity) {
Page page=new Page<>(entity.getPageNum(),entity.getPageSize());
QueryWrapper queryWrapper=new QueryWrapper<>();
queryWrapper.eq("e.del",entity.getDel());
IPage iPage = leaveMapper.getLeaveInfo(page,queryWrapper);
return iPage;
}
- Mapper
IPagegetLeaveInfo(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper wrapper);
- xml
- QueryWrapper 条件查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLBbhrSt-1656057670187)(E:资料学习笔记Mybatis或Mbatis-plusimaget1.png)]



