在写SQL的时候,如果SQL拼接次数过多,使用StringBuffer和StringBuilder哪个更好? 什么时候可以用StringBuilder,什么时候不能用,希望高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 StringBuilder是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 StringBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。 如果可能,建议优先采用StringBuilder,因为在大多数实现中,它比 StringBuffer 要快。因为StringBuilder线程不同步,StringBuffer线程同步。这个在API中有明确说法。 因为StringBuilder线程不同步,StringBuffer线程同步,请问区别在哪里?就是个sql语句和线程有多大的关系,不好意思我线程没学好。 dao 的话,一般都是单线程 完全没必要自己去用StringBuilder拼,除非是在for循环中否则字符串“+”已经在编译的时候转换成StringBuilder.append了如果在for中“+”,编译的时候编译成在for中不断的new StringBuilder,影响效率,这时候在for外部自己new一个StringBuilder是有用的 线程和sql语句没什么关系,线程不安全就是说如果两个线程同时操作StringBuffer对象会有问题。不用太纠结这个,平时的应用,就使用StringBuidler效率也没差到哪。 hibernate中用原装sql操作数据库是否会牵扯线程问题,用StringBuffer肯定没有问题,现在最主要想知道的是用StringBuilder会不会出问题,什么情况下会出问题,出什么问题? stringbuilder 比 stringbuffer 更好。可以看JDK文档 其中有一句记得是说 当仅使用append时 stringbuilder比stringbuffer更好一些 JDK中是宽泛的说法,我现在其实就是想知道在hibernate中session.createSQLQuery(sql);中写的sql语句中用什么好点?StringBuilder固然快点,想请教各位用这个是否会出什么问题。 用stringbuilder拼个sql不涉及线程,没啥问题,尽管用。SQL中设计参数时尽量使用占位符。一方面可以减少字符串拼装,另一方面可以尽可能的减少sql编译BTW,如果sql都是常量字符,用+会编译成一句常量字符,涉及到常量变量混合的情况,优先使用stringbuilder StringBuilder真的能带来性能提升?!http://www.ticmy.com/?p=69 拼SQL还有个巧妙的办法是把MyBatis的SQL类挖出来,MyBatis的SQL动态SQL类设计的很不错 从来没想那么多,直接用string有啥不好??关注中 StringBuilder和StringBuffer是一个是同步的一个是不同步的... 针对String连接操作编译器生成的StringBuidler#append肯定是单个线程在操作,因此不会有线程安全问题。现在明白了。 StringBuffer是多线程的,效率明显低于StringBuilder,但二者功能是一样的。具体使用哪个要看lz的使用环境。如果是一般的单线程环境,建议使用StringBuilder StringBuilder 非线程同步要快 struts2下载文件 异常 JAVA初学者问题 很多问题~~ 这点工资高吗? 急,关于Struts怎么取复选框的值 mysql的jdbc下载文件夹里,哪个是jdbc驱动包?? bean:define定义一个类对象,如何在页面上操作!!! 《J2EE 构建企业系统-专家级解决方案》5折抛售 jb7输入中文就异常退出的问题如何解决,(再线等候,解决以后马上结贴) 大家帮帮忙!关于sun的j2ee server的数据源的配置问题! 关于hibernate配置和SAE MYSQL的问题 Struts2中action路径问题 web小项目 sqlserver2005连接问题
因为StringBuilder线程不同步,StringBuffer线程同步。
这个在API中有明确说法。
线程和sql语句没什么关系,线程不安全就是说如果两个线程同时操作StringBuffer对象会有问题。
不用太纠结这个,平时的应用,就使用StringBuidler效率也没差到哪。
可以看JDK文档 其中有一句记得是说 当仅使用append时 stringbuilder比stringbuffer更好一些
一方面可以减少字符串拼装,
另一方面可以尽可能的减少sql编译BTW,如果sql都是常量字符,用+会编译成一句常量字符,涉及到常量变量混合的情况,优先使用stringbuilder
是把MyBatis的SQL类挖出来,MyBatis的SQL动态SQL类设计的很不错