顶呱呱啊!更便捷的Mybatis增强插件——EasyMybatis

顶呱呱啊!更便捷的Mybatis增强插件——EasyMybatis,第1张

直接数组元素对换

使用ArrayList: ArrayList存入和取出的顺序是一样的,可以利用这里特性暂时存储数组元素

使用Collections和Arrays工具类

零基础学习java可按照这份大纲来进行学习
第一阶段:Java专业基础课程
----------

阶段目标:

1 熟练掌握Java的开发环境与编程核心知识
2 熟练运用Java面向对象知识进行程序开发
3 对Java的核心对象和组件有深入理解
4 熟练应用JavaAPI相关知识
5 熟练应用JAVA多线程技术
6 能综合运用所学知识完成一个项目
知识点:
1、基本数据类型,运算符,数组,掌握基本数据类型转换,运算符,流程控制。
2、数组,排序算法,Java常用API,类和对象,了解类与对象,熟悉常用API。
3、面向对象特性,集合框架,熟悉面向对象三大特性,熟练使用集合框架。
4、IO流,多线程。
5、网络协议,线程运用。

---------
第二阶段:JavaWEB核心课程
阶段目标:
1 熟练掌握数据库和MySQL核心技术
2 深入理解JDBC与DAO数据库 *** 作
3 熟练运用JSP及Servlet技术完成网站后台开发
4 深入理解缓存,连接池,注解,反射,泛型等知识
5 能够运用所学知识完成自定义框架
知识点:
1、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,建模工具。
2、深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为Java后台开发打下坚实基础。Web页面元素,布局,CSS样式,盒模型,JavaScript,jQuery。
3、掌握前端开发技术,掌握jQuery。
4、Servlet,EL表达式,会话跟踪技术,过滤器,FreeMarker。
5、掌握Servlet相关技术,利用Servlet,JSP相关应用技术和DAO完成B/S架构下的应用开发。
6、泛型,反射,注解。
7、掌握JAVA高级应用,利用泛型,注解,枚举完成自己的CRUD框架开发为后续框架学习做铺垫。
8、单点登录,支付功能,项目整合,分页封装熟练运用JSP及Servlet核心知识完成项目实战。

---------
第三阶段:JavaEE框架课程
阶段目标:
1 熟练运用Linux *** 作系统常见命令及完成环境部署和Nginx服务器的配置
2 熟练运用JavaEE三大核心框架:Spring,SpringMVC,MyBatis
3 熟练运用Maven,并使用SpringBoot进行快速框架搭建
4 深入理解框架的实现原理,Java底层技术,企业级应用等
5 使用Shiro,Ztree和Spring,SpringMVC,Mybaits完成企业项目
知识点:
1、Linux安装配置,文件目录 *** 作,VI命令,管理,用户与权限,环境部署,Struts2概述,hiberante概述。
2、Linux作为一个主流的服务器 *** 作系统,是每一个开发工程师必须掌握的重点技术,并且能够熟练运用。
3、SSH的整合,MyBatis,SpringMVC,Maven的使用。
4、了解AOP原理,了解中央控制器原理,掌握MyBatis框架,掌握SSM框架的整合。
5、Shiro,Ztree,项目文档,项目规范,需求分析,原型图设计,数据库设计,工程构建,需求评审,配置管理,BUG修复,项目管理等。
6、独立自主完成一个中小型的企业级综合项目的设计和整体架构的原型和建模。独立自主完成一个大型的企业级综合项目,并具备商业价值

最近做个项目有很多的报表统计,涉及到几十张表抽取数据,形成一系列统计数据。
举个例子,比如统计一个单位不同职务级别女人数量、少数民族数量、30岁以上人员数量,40以上人员数量等。如:
董事长:0 0 0 1
中层领导:2 2 3 8
职员:20 40 80 200
刚开始想办法拼成了一个超级长的sql来做,但是最后长度超过vachar2的最大长度了,虽然有其他办法解决,虽然最大sql看起来很美好,但是想想后期的优化和维护,还是决定重新来规划。中间的过程就不说了,最终确定先定义一行数据存number型object(类似一维数组),形式如(0,0,1)。然后放到二维数组里。闲言少叙,如下定义:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
create or replace
TYPE C_ROW IS OBJECT(
COUNT_SEX NUMBER, --性别女统计
COUNT_NATION NUMBER, --少数民族统计
COUNT_30AGE NUMBER --30岁统计
);
[html] view plaincopy在CODE上查看代码片派生到我的代码片
create or replace
TYPE C_ROW_CLM IS TABLE OF C_ROW;
关于以上的语法我就不解释了。C_ROW_CLM 就是二维数组。
一个简单的存储过程如下:就是往二维数组放了三列。

a:使用if+where实现多条件查询

首先场景需求,有 个年级和班级表,第一个要求是根据模糊查询姓名,和年龄大小进行条件查询,接口层方法

其次是映射文件的配置

测试

b:choose when 分类

这种方式和java中choose循环结构原理是一样的,判断多种情况,只要修改一下映射文件即可

接口 类

映射文件

结果

c:使用foreach完成复杂 查询,有三种方式,

第一种:传入的参数为数组类型

测试类

第二种:传入list集合

测试:

第三种:根据Map集合

打印结果可以执行以下。

d;一对多的两种实现方式

接口方法

映射文件配置

两种方式都能实现,打印效果

方案一打印效果

==> Preparing: select from grade,student where gradegradeId = studentstuGrade and gradeId = ============一条sql
==> Parameters: 1(Integer)
<== Columns: gradeId, gradeName, stuId, stuName, stuAge, stuGrade
<== Row: 1, S1297, 2, zhangyu, 19, 1
<== Row: 1, S1297, 3, zy, 20, 1
<== Row: 1, S1297, 4, zy, 21, 1
<== Total: 3
zhangyu
zy
zy

Process finished with exit code 0

方案二打印效果

==> Preparing: select from grade where gradeId= ==========第一条sql
==> Parameters: 1(Integer)
<== Columns: gradeId, gradeName
<== Row: 1, S1297
====> Preparing: select from student where stuGrade = ==========第二条sql
====> Parameters: 1(Long)
<==== Columns: stuId, stuName, stuAge, stuGrade
<==== Row: 2, zhangyu, 19, 1
<==== Row: 3, zy, 20, 1
<==== Row: 4, zy, 21, 1
<==== Total: 3
<== Total: 1
zhangyu
zy
zy

Process finished with exit code 0

答案:

&lt;if test="searchdataforArray != null"&gt; 
and datefor in ;

&lt;foreach item="item" index="index";

collection="searchdataforArray";

open="("separator="," close=")"&gt;#{item}&lt;/foreach&gt;

&lt;/if&gt。

循环体中的具体对象:支持属性的点路径访问,如itemage,iteminfodetails,具体说明:在list和数组中是其中的对象,在map中是value,collection,要做foreach的对象,作为入参时,List<>对象默认用list代替作为键,数组对象有array代替作为键,Map对象没有默认的键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。
除了入参这种情况外,还有一种作为参数对象的某个字段的时候。


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

原文地址: https://outofmemory.cn/yw/13383669.html

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

发表评论

登录后才能评论

评论列表(0条)

保存