MyBatis点滴积累
MyBatis在使用中不知不覺積累了很多經驗
?
1.#和$
MyBatis/Ibatis中#和$的區別
1. #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那么解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
?
2. $將傳入的數據直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時的值為order by user_id,? 如果傳入的值是id,則解析成的sql為order by id.
?
3. #方式能夠很大程度防止sql注入。
?
4.$方式無法防止Sql注入。
?
5.$方式一般用于傳入數據庫對象,例如傳入表名.
?
6.一般能用#的就別用$.
ps:在使用mybatis中還遇到<![CDATA[]]>的用法,在該符號內的語句,將不會被當成字符串來處理,而是直接當成sql語句,比如要執行一個存儲過程。
?
2.if
引用where 1=1 再
<if test="user!=null"> and user =#{user} </if>
更好的方式是
<select id="findActiveBlogLike" resultType="Blog">SELECT * FROM BLOG<where><if test="state != null">and state = #{state}</if></where>
</select>
參考:
mybatis 使用經驗小結
?
3.獲得數據庫返回值
說明,首先sqlmapper里這兩種寫法都可以
<insert id="addTest" parameterType="blog.csdn.unix21.Bean"><selectKey resultType="Integer" keyProperty="id" order="AFTER" >SELECT @@IDENTITY AS id</selectKey>insert into test_hm (name,city)values (#{name,jdbcType=VARCHAR},#{city,jdbcType=VARCHAR})
</insert>
<insert id="addTest1" parameterType="blog.csdn.unix21.Bean" useGeneratedKeys="true" keyProperty="id">insert into test_hm (name,city)values (#{name,jdbcType=VARCHAR},#{city,jdbcType=VARCHAR})
</insert>
?
insert代碼
public int addTest(TestBean t) throws Exception { String resource = "conf_test.xml";//加載mybatis 的配置文件(它也加載關聯的映射文件)Reader reader = Resources.getResourceAsReader(resource);//構建sqlSession 的工廠SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//創建能執行映射文件中sql 的sqlSessionSqlSession session = sessionFactory.openSession();//映射sql 的標識字符串String statement = "sqlMapper.addTest1";//執行查詢返回一個唯一user 對象的sqlint r=0;try {r = session.insert(statement, t);session.commit();} finally {session.close();}System.out.println(r);return r;
注意:需要commit和close.
?
?
?數據庫自增的id返回在bean里了,不能直接從session.insert(statement, t)獲取,這個獲取的是數據庫改版的行數,如果只insert那么這個返回的是1。
參考:
MyBatis魔法堂:Insert操作詳解(返回主鍵、批量插入)
?
?4.使用Mybatis-Generator自動生成Dao、Model、Mapping相關文件
Mybatis屬于半自動ORM,在使用這個框架中,工作量最大的就是書寫Mapping的映射文件,由于手動書寫很容易出錯,我們可以利用Mybatis-Generator來幫我們自動生成文件。
關于Mybatis-Generator的下載可以到這個地址:https://github.com/mybatis/generator/releases
參考:http://www.cnblogs.com/lichenwei/p/4145696.html
?
?
總結
以上是生活随笔為你收集整理的MyBatis点滴积累的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flex报错Error #2048: 安
- 下一篇: 黄山风景区早上几点售票