首页 > 代码库 > ibatis学习(5)sqlMap注意事项

ibatis学习(5)sqlMap注意事项

 

1.sqlMap的整体理解:配置设置之后,就是建立了一个sqlMAPID,SQL),可以向其中输入参数,也可与返回数据。  

<!--select标签:设置SQL的ID,并给SQL设置返回值 -->

   <select id="selectAllStudent"resultClass="Student">

       select * from student

   </select>


<!--typeAlias标签:给类名取了一个别名 -->

<typeAlias alias="student"type ="Student" />

2.理解SQL语句中的参数书写方式

   1)理解#id#的意思:

      #id#   就相当与占位符,就像JDBC里面的“?”。

     parameterClass="int"  就相当于设置“?”的类型。 

          对于一般基本类型:

 <select id="selectStudentByID"  parameterClass="int"  resultClass="Student">

       select * from student

       where id=#id#

   </select>

        对于引用类型:

     当读到#id#的时候,就会调用到参数中的get方法,而调用哪个get是看# #里面的内容。

     #Id#   就是调用getID的方法。所以,values中内容顺序是不能换的。

<insert id="insertStudent"   parameterClass="Student">

       insert into Student(id,name,brith)

       values(#id#,#name#,#brith#)

   </insert>

    2)select语句中模糊查询   

          where 从句 LIKE "%$name$%" $name$会取到name的值

 

3.序列生成主键

       <selectKey>  </selectKey>中先查询到ID,在插入。

       resultClass="int"就是指得到的返回值。

       keyPropery="id"  是指Student中的id,而不是数据库中的id,代表赋值给Student id

<insert id="insertStudentBySequence"   parameterClass="Student">

       <selectKey  resultClass="int"keyPropery="id">

       select xuelie.nextVal  from dual

       </selectKey>

       insert into Student(id,name,brith)

       values(#id#,#name#,#brith#)

   </insert><span style="color:black;">  </span>

4.注意点: 

    在写实体类的时候,要知道SQLMAP运行过程中,会动态调用实体类的相关方法和属性,构建时必须提供无参构造函数。否则会出错误。

 

5.优点:把SQL语句和Java代码分离

   缺点:1.SQL语句需要自己写

               2.参数使用不方便,需要把所有的参数都打包成一个对象,才能接收。  

 

  

 

ibatis学习(5)sqlMap注意事项