文档章节

2012年工作中遇到的20个问题

jtn
 jtn
发布于 2015/04/13 15:05
字数 1228
阅读 7
收藏 0

    2012年工作中遇到了很多问题,刚刚开始时,遇到的问题没有及时记载下来,挺可惜的。

1.构造SQL语句--简化构造

  select * from user where 1 =1 ;
  if(name != null){
    and name ="fans";
  }
 
  if(age != null){
    and age= 1;
  }
 
  如果不使用“1=1”,
 
  name != null
  name == null && age != null
  name == null && age == null
  3种情况,太麻烦了。
 
  如果有更多的参数,根本不能忍受!!

2. 前端js导入

  <script type=""></script> 这种方式可以导入。

  <script />不可以,有点不合理啊。

3.MySQL中使用getGeneratedKeys获取最后插入记录的自增id值
有时当我们向MySQL数据库中插入一条记录后,我们需要获取最后插入记录的自增id值以进行接下来的查询等操作。

下面是在java中使用PreparedStatement的对象的getGeneratedKeys()方法获取最后插入记录的自增id值的示例:

 String sql = "INSERT INTO users (username,password,email) VALUES (?,?,?);"; 

 PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//传入参数:Statement.RETURN_GENERATED_KEYS 

 pstmt.setString(1, user.getUsername()); 

 pstmt.setString(2, user.getPassword()); 

 pstmt.setString(3, user.getEmail());                

 pstmt.executeUpdate();//执行sql 

 ResultSet rs = pstmt.getGeneratedKeys(); //获取结果 

 rs.next(); 

 int id = rs.getInt(1);//取得id的值

//
 Mybatis中获取自增的主键值,是直接在 返回结果的Map<String,Object>中直接取出,而不是通过Dao层 返回值来获得的。
 
4.Eclipse自动提示功能配置

  配置步骤:
1  Window > Preferences > Java > Editor > Content Assist

2  “Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,

     把“.”修改成".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

     意思就是指遇到26个字母的大小写和.(这些符号就触发代码提示功能了)

5. maven打包  存在旧的文件

   使用Maven部署时,启动时总是报错。后来发现,没能将旧版class文件删掉,导致冲突。

6. mybatis的 resultMap和resultType不同,使用 提示功能时,选择错了,很难查找。

7. left join

   如果id存在,连接查询,取出名字;否则,不连接。
   2张表连接, 工作中,需要获得一个广告主的信息。如果广告主设置了行业信息,需要获得该行业的名字。

    使用Left join可以解决。

8. Eclipse项目出现问题

  build path出现问题:.classpath文件
 
  项目名称 红叹号-资源文件确实
 
  .classpath 其实是个文本格式的文件,使用Nodepad打开。
 
  <?xml version="1.0" encoding="UTF-8"?>
<classpath>
 <classpathentry kind="src" path="src"/>
 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 <classpathentry kind="lib" path="lib/httpclient-4.2.jar"/>
 <classpathentry kind="lib" path="lib/httpcore-4.2.jar"/>
 <classpathentry kind="lib" path="lib/log4j-1.2.9.jar"/>
 <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
 <classpathentry kind="output" path="bin"/>
</classpath>

   把不需要的classpathentry删掉就可以了。
  
9.struts2 集成tiles 问题及解决办法

http://javaprograms.iteye.com/blog/366387

dtd 的语法定义和官方的不一样 。
  struts2 提供的 是
http://struts.apache.org/dtds/tiles-config_2_0.dtd
<put name="title" value="Tiles Showcase"/>

而tiles 自己的是 http://tiles.apache.org/dtds/tiles-config_2_0.dtd
<put-attribute name="title" value="Tiles Showcase"/>

10.Servlet 单实例 多线程

 (MVC与三层架构 都是虚的,没有统一的答案)
  
  SpringMVC-Controller,Struts2 Action都可以是单例的?
  Service/DAO 都是单例的。
  
   MVC与三层架构 都是 抽象的概念,有没有重复?有没有关系?
   
  MVC(解决展现层 问题)
 
  Model:Service层的输出?
 
  View:JSP/HTML
 
  Controller:SpringMVC-Controller,Struts2 Action

  三层架构
  显示层    ui、display 、 view (controller)
  业务处理  business/logic
  数据层    db、model、dao
 
11. Mybatis  数据类型 已经转好了,不必要再次转换
  数据库中有个Timestamp类型的字段,Mybatis取出放进Map<String,Object>时,实际类型已经是Date类型了。
  可以直接强制转换成Date类型。
  Date date = (Date)map.get("startTime");

12. 看书?研究代码?
    看书和研究代码 都是 提高编程功底的可行方法,你觉得呢?

13.$().post()
同步异步

14.性能监测工具JavaMelody
 项目中用到了,值得熟悉下。

15. Hibernate 2级缓存--EhCache

项目中有些报表数据,数据量很大,使用了EhCache。后来又经常报错,去掉了。
游资段为Blob类型的PO,User.hbm.xml则不能 使用EhCache。

16.Hibernate Session问题。

Hibernate老版使用的是org.hibernate.classic.Session,新版使用的是org.hibernate.Session。
 
 17.找不到类org/apache/commons/lang/xwork/StringUtils
 
 Struts2-Spring-Plugin版本不兼容
 
 18. Dom4j删除元素时,需要先找到 父结点,通过父结点删除 子元素。
   Element parent;
    parent.remove(Element child);
 而不能直接通过 根节点来删除。
 
19.当处理映射文件时,Hibernate 用反射(reflection)来决定这个映射类型。

这需要时间和资源,所以如果你注重启动性能,你应该考虑显性地定义所用的类型。

这个是网上看到的,感觉有点道理,待实践体会。

20.Spring注入bean时,有时会失败,然后程序中出现NullPointerException;
  一种可能的因素是new了对象,比如 MyObject myObject = new MyObject();
  此时,Spring不再负责MyObject的注入。
 

相关阅读

工作问题 http://blog.csdn.net/FansUnion/article/category/1334371

© 著作权归作者所有

jtn

jtn

粉丝 12
博文 879
码字总数 879609
作品 0
武汉
程序员
私信 提问
石家庄开源技术沙龙现场报道

时间:16号 14点 地点:河北师大软件学院 人物: 很多 ![大概去了20人左右,教室很大显得很空旷][1] 大概去了20人左右,教室很大显得很空旷 ![开篇清风分享linux][2] 开篇清风分享linux ![3...

雁南飞飞
2014/03/16
398
6
关于如何提高程序员工作能力的一些想法

引言:最近一直在思考一个问题,就是工作这么多年了,到底怎么样才能更好的提高自己的工作能力呢?这是一个综合性的问题,昨日也和前同事老高有过一次简单的交流,他得出的结论是:业务+技术...

landy8530
2017/11/14
0
0
第20期JEECG架构培训班开始报名啦,每期十个名额,报名从速!

第20期开始报名啦,只招10名,报名从速啦!! 《开源社区JAVA架构师徒培训班》 Java程序员如何打破工作2,3年的瓶颈问题, 让技术更上一层楼?? 很多人做java开发2,3年后,都会感觉自己遇到瓶颈...

Jeecg
2015/10/13
93
0
走出软件作坊

这本书 讲解了从程序员到cto之路的成长历程,而且也为中小型企业遇到的一些管理问题提供的解决方案。 首先对于客户,客户和老板沟通一个项目,然后有了初步需求,然后程序员做一个demo,告诉...

阳666
2016/12/18
12
0
Kaggle问卷主成分分析,16000万数据从业者面临这5类挑战

     大数据文摘作品   编译:李雷、元元、小鱼   数据科学的功能是在数据中寻找有用的观点并加以应用。然而,数据科学并非凭空而来。在向分析目标迈进的过程中,数据从业者可能面临...

大数据文摘
2018/03/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
17分钟前
3
0
支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)

上篇文章《支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)》介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建、配置,运维、扩容等具体操作 集群搭建 2018年10月 Re...

分布式系统架构
18分钟前
5
0
JVM -- 垃圾回收算法及分代垃圾收集器

Hello,今天记录下 Java虚拟机中的其中一个重点知识 --> 垃圾回收算法及分代垃圾收集器。 一起学习,一起进步。继续沉淀,慢慢强大。希望这文章对您有帮助。若有写的不好的地方,欢迎评论给建...

猫狗熊
31分钟前
3
0
ERC-777以太坊新代币标准解读

ERC777是一个新的高级代币标准,可以视为ERC20的升级版本,因此它解决了ERC20以及ERC223存在的一些问题,开发者可以根据自己的具体需求进行选型。 1、使用ERC820进行合约注册 有别于ERC20的自...

汇智网教程
今天
7
0
代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部