初學mybatis框架

1、簡述java

  mybatis框架用了兩天後,給個人感受是dao層對數據庫的操做變得簡單多了,簡化了大量的代碼sql

2、開發步驟數據庫

  1.新建工程,把mybatis框架的jar包和依賴包拷貝到工程中。安全

  2.編寫實體類,與數據庫表進行對應。mybatis

  3.定義數據接口,並在接口中定義數據操做方法。oracle

  4.編寫接口映射文件,對接口的數據操做進行映射。app

  5.編寫mybatis全局文件配置,配置數據庫鏈接參數,配置數據映射文件。框架

  6.編寫測試類進行測試。(測試步驟:獲取mybatis環境,實例化數據接口,調用接口方法,處理操做結果)。學習

3、學習過程當中的知識碎片測試

  1.mybatis有兩個配置文件,一個是全局配置文件,一個是接口映射文件。

    全局配置文件:

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

    接口映射文件:

<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  2.配置時可以使用properties進行簡化,方便後續開發與維護。例如

<dataSource type="POOLED">
        <property name="driver" value="${p_driver}"/>
        <property name="url" value="${p_url}"/>
        <property name="username" value="${p_username}"/>
        <property name="password" value="${p_password}"/>
      </dataSource>

  把參數放在外

<properties>
    <property name="p_driver" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="p_url" value="jdbc:oracle:thin://localhost:1521/orcl"/>
    <property name="p_username" value="scott"/>
    <property name="p_password" value="zht"/>		
</properties>

  3.若是要配置的別名不少,能夠使用package進行簡化配置,配置pojo類所在的package包便可

<typeAliases>
<package name="com.neuedu.mybatisdemo.bean"/>
</typeAliases>

  4.mybatis的映射文件有四種配置方法 ,其中比較方便的是配置包名

<mappers>
<package name="com.neuedu.mybatisdemo.dao"/>
</mappers>

  5.resultMap與resultType相比較,resultMap看起來更直觀明瞭,方便閱讀理解,使用resultType時須要注意實體類的屬性須要和數據庫表的列名一致,若是不一致則須要使用別名,不然會匹配不上。

  6.在寫sql語句配參時,使用${}和#{}都可實現,但#{}能夠防止sql注入式攻擊,更安全,推薦使用#{}。

  7.使用序列管理主鍵時的sql寫法

<insert id="addStudent" parameterType="Student">
     <selectKey keyColumn="id" keyProperty="id" order="BEFORE" resultType="int">
        select tab_student.nextval as id from dual
     </selectKey>
     INSERT INTO student VALUES(#{id},#{account},#{password},#{truename}) 
</insert>         

  8.表關聯查詢,能夠使用collection進行關係映射

<select id="findAll" resultMap="studentMap">
     <!-- 表關聯查詢 -->
     SELECT c.*,s.* FROM <include refid="formsql"></include>
     </select>
     <sql id="formsql">
     student s LEFT OUTER JOIN tab_student_course t ON s.id=t.student_id LEFT OUTER JOIN course c ON t.course_id=c.course_id
     </sql>
<resultMap type="Student" id="studentMap">
         <id column="id" property="id"/>
         <result column="account" property="account"/>
         <result column="password" property="password"/>
         <result column="truename" property="truename"/>
         <collection property="courses" ofType="Course" javaType="ArrayList">
             <id column="course_id" property="courseId"/>
              <result column="course_name" property="courseName"/>
              <result column="course_score" property="courseScore"/>
              <result column="start_date" property="startDate"/>             
         </collection>
     </resultMap>

  9.多條件查詢的分頁查詢

 

<select id="searchByPager" parameterType="Pager" resultMap="courseMap">
      SELECT * FROM
    (SELECT c.*,ROWNUM r 
    FROM (SELECT * FROM course WHERE 1=1
    <if test="course.courseName != null">and course_name like concat(concat('%',#{course.courseName}),'%')</if>
    <if test="course.startDate != null">and start_date > #{course.startDate}</if>
    <if test="course.courseScore !=null">and course_score > #{course.courseScore}</if>
    ORDER BY course_score DESC) c
    WHERE ROWNUM &lt; =#{end})
    WHERE r&gt;=#{begin}
  </select>
相關文章
相關標籤/搜索