SSM传智播客杰信项目(二)

时间:2021-09-06 16:36:56
重点知识回顾:
到软件公司后首先要了解我们公司所在行业,了解行业的特点,了解我们客户它们常用的软件有什么特点,称作业务。只有我们充分了解用户想要的东西,我们才能做的满足客户要求。然后才了解公司的软件架构,以及相关技术。
业务:在某个行业背景下,它的一些习惯性的称谓。
面试时,重点向面试官阐述业务,项目背景,要从项目的业务中提出技术亮点。
搭建系统框架
工具

1)PowerDesigner 业界标准的数据库建模工具
直观的看到表,看到表之间的关系,生成创建表的SQL
3)Oracle 10g EX/11g Oracle数据库,自动创建一个本地服务EX
4)Maven 重要,未来公司发展趋势
5)帧框架、ajax
6)SpringMVC 3.2.6+Spring + Mybats 3.2.2 Mybats-spring1.2 
删除多条:
sql:
<!-- 删除多条 -->
<delete id="delete" parameterType="string">
delete from FACTORY_C
where FACTORY_ID in
#{id}
</delete>


//批量删除
@RequestMapping("/basicinfo/factory/delete.action")
public String delete(@RequestParam("id")String[] ids){
factoryService.delete(ids);
return "redirect:/basicinfo/factory/list.action";
}


查询文本字段,换行的的显示:
<pre>文本内容</pre>


5. MyBatis自动生成代码的插件
a) 功能:
1)生成实体domain
2)生成mapper映射文件
3)生成客户端调用代码 sqlSession.select
b) 操作步骤:
1) 覆盖myeclipse插件目录
2) 两个配置文件

generatorConfig.properties 配置信息(常变化,放到resource资源文件夹)
sqlMapGeneractor.xml 生成基础配置
c) sqlMapGeneractor.xml配置

1) 必须配置绝对路径的数据库驱动jar
2) 哪些表要生成代码,注意:生成会覆盖原有文件,手工修改的内容会丢失
缺点:
1) 非数据库定义的伪列(虚拟列),自动生成不会创建
2) 表之间的关系,它无法生成
一般用于第一次生成或者局部拷贝
插件安装成功,点属性文件右键菜单会出现下面的一项
d) 项目的mapper文件和mybatis生成工具的差异
1) 命名空间
2) Where所有字段,一般根据业务需要,需要几个写几个
3) 产生多余的Example调用的sql,这些对于项目来说,无用
4) 创建resultMap,主键<id>,需要手工修改
5)普通属性基本完全拷贝,当需要类型映射比较精确时,只能手工修改;例如:数据库表字段定义的是integer,但是在自动生成时映射称为DECIMAL
6) 查询只有按id来查询,相当于get。需要补充查询多条的find,修改为get
7) 自动生成提供动态insert和一个全部字段的insert;项目中一般只用全部字段的insert
8) 自动生成提供动态update和一个全部自动的update;项目中一般只用动态update
9) 自动生成提供按id来删除;项目中一个按id删除,一个按多个id批量删除



构建复杂SQL时原则
1) 从最小的结果集开始查询
2) 将它们进行连接,用左连接



7. 在使用hibernate和mybatis一些区别?
应用hibernate,对象映射,对象的关联关系。
应用mybatis,SQL,利用SQL直接查询所需要的内容,提高了获取数据的效率。SQL可以按照用户的业务来挑取所要的字段。
Hibernate当中SQL能否优化,一般情况无法优化SQL,因为hibernat使用HQL,它自动生成SQL语句。Mybatis可以实现手工SQL优化。
Hibernate开发重点,面向对象,来思考,来开发;全自动ORM
Mybatis开发重点,面向SQL,面向过程思考,面向对象的开发;半自动ORM



Java要实现图形报表都有什么方式?
jFreeChart 纯java API,利用生成一张图片。
excel图形报表,poi不能直接操作图形报表控件。变相解决,先做一个excel模板,插入好图表控件,然后利用poi动态设置它的数据。用户打开excel,图表直接展现。
第三方的报表软件,可视化开发。开发效率极高。可视化布局界面,配置数据源即可。(SQL的结果集)。收费。数巨报表(10w,每年服务费1w)。做一个应用程序,(C/S程序),IE上安装插件。兼容性。
amCharts FLASH,只需要构建数据xml。
需要swf控件,例如饼形通用
setting.xml 不通用的
data.xml、data.txt,xml格式更加直观,不通用的
jFreeChart、excel、amCharts PK比较
jFreeChart 纯java api,缺点:图形非常粗糙,它实际是利用jFreeChartapi生成的图片,表现力差,专门的api需要记忆。
public class Pie {
public static void main(String[] args) {
//构造图形的数据集合
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("宏艺", 10062);
dataset.setValue("平遥鸿艺", 3256);
dataset.setValue("南皮开发", 5200);
dataset.setValue("光华", 5352);
dataset.setValue("会龙", 3702);
dataset.setValue("精艺", 2152);
dataset.setValue("民鑫", 5400);
dataset.setValue("汇越", 300);
dataset.setValue("天顺", 4900);
dataset.setValue("华艺", 3302);
dataset.setValue("文水志远", 3940);
JFreeChart chart = ChartFactory.createPieChart3D(
"生成厂家销售情况统计图", //图形的主标题
dataset, //图形的数据集
true, //是否生成图形的子标题
true, //是否在图形上生成工具提示
true //是否通过图片的点击生成URL地址
);
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));
//处理子标题的乱码
chart.getLegend().setItemFont(newFont("宋体",Font.BOLD,15));
//获取图表区域对象
PiePlot3D piePlot3D = (PiePlot3D) chart.getPlot();
//处理图表区域的乱码
piePlot3D.setLabelFont(new Font("宋体",Font.BOLD,15));
//在图形上生成数值,格式为;沟通 (60%) {0}名称 {1}数值 (2)百分比
String labelFormat = "{0} ({2})";
piePlot3D.setLabelGenerator(newStandardPieSectionLabelGenerator(labelFormat));
//显示图形
ChartFrame chartFrame = new ChartFrame("jk",chart);
chartFrame.setVisible(true);
chartFrame.pack();
}
}