MyBatis中#{ }和${ }的区别详解
1.#将传入的数据当成一个字符串,会对自动传入的数据加一个
双引号。
例如order by #id#,如果传入的值是111,那么解析成sql时变为order by “111”,如果传入的值是id,在解析成sql为order by “id”.
其实原来sql语句通常写成order by #{id} 与order by #id#的效果
一样。
2.$将传入的数据直接显示在sql语句中。例如order by${id},如果
传入的值则解析成sql语句为order by 9
3.#方式能够很大程度上防止sql注入,而$无法防止sql注入,
$一般用于传入数据库对象,例如传入表名,
一般能用#就别用$
4.mybatis排序是用order by动态参数时需要注意,用$而不是用
#。
5.查询语句使用别名来解决,#{ }是spring表达式,${ }是el表达式。
---------------------------------------------------
6.Web Service : 一种可以接收从Internet或Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。
7.数据库优化应该遵循的层次
1.减少应用的请求(应用层)
2.降低数据库内部资源争用(数据库层)
3.降低输入输出数据和规模(内存)
4.优化输入输出处理能力(储存层)
5.如果做查询的时候尽量不要用*,尽量减少不必要的空间消耗。
优化查询:
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)3、升级硬件4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
5、提高网速;6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。
7、增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。
8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。
19、查询时不要返回不需要的行、列
等等