MyBatis.Net 的注意事项

一 # 和 $ 的区别

  1. “#”将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是数字,那么解析成sql时的值为order by “数字”, 如果传入的值是id,则解析成的sql为order by “id”.

2 .而第二个符号 将传入的数据直接显示生成在sql中。如:order by 符号user_id符号,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.

  1. 方式能够很大程度防止sql注入。

4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,列名等。

6.一般能用#的就别用 使 的时候,一定要注意场景。

  1. 在使用mybatis中还遇到的用法,在该符号内的语句,将不会被当成字符串来处理,而是直接当成sql语句来处理,

就像在数据库客户端里执行 sql 是一样的效果,所以如 <> ,!= 都可以在这里面执行,适合复杂的 SQL 。

  1. 而不加 这个符号的,就是当做字符串来处理的。
    {—————————————————————————–}
    Mybatis中queryForPaginatedList的分析
    对于一个刚刚学习ibatis初学者来说,看到这个方法一定会很高兴,因为他可以让我们更加容易的进行过分页,但是当我们打开帮我文档的时候我们会发现这个方法已经过时了,我们于是可能会联想到是不是又有啥跟好的方法了,其实不是的,这个方法不像hibernate自带的分页方法,会根据不同的数据库进行优化,他完全是依赖jdbc驱动程序来实现分页的。

调用次序如下SqlMapClientImpl.queryForPaginatedList->SqlMapSessionImpl.queryForPaginatedList
->SqlMapExecutorDelegate.queryForPaginatedList->GeneralStatement.executeQueryForList
->GeneralStatment.executeQueryWithCallback->GeneralStatment.executeQueryWithCallback
->SqlExecutor.executeQuery->SqlExecutor.handleMultipleResults()

他取出来的数据要放到内存中,这个一来,如果数据量很大的,会严重的影响系统的性能,因此我不建议大家使用这种方式进行分页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值