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 < =#{end}) WHERE r>=#{begin} </select>