mapper.xml配置文件詳解

--命名空間一般爲該mapper映射文件所對應maper接口所在的路徑java

<mapper namespace="com.harbsoft.com.mybatis.mapper.UserMapper">

--開啓二級緩存 (實體類必須序列化)mysql

<cache type="org.mybatis.caches.ehcache.EhcacheCache" />

--抽取通用的SQLsql

<sql id="user_query_where">   
     通用sql
</sql>    

--if數據庫

<if test="id!=null and id!=''">
       一般是where條件語句
 </if>

--foreach緩存

<foreach collection="ids" item="id" open="and (" close=")" separator="or">
     user.id=#{id}
</foreach>

--$mybatis

AND user.username LIKE '${username}%'

--#app

AND user.sex = #{sex}

--resultMap對應的是表與實體類的映射  -- type 數據庫表對應的實體類,別名或完整類名均可以ui

<resultMap type="person" id="resultMapPerson">
   <!-- 結果集的主鍵 -->
   --主鍵  <id/>
   <id  property="userid" column="id"/>
   <!-- 普通的列 -->
   --column 是數據庫中字段, property是實體類中字段
   <result property="name"  column="username" />
   <result property="addr"  column="address" />
</resultMap>

-- 一對一的關係處理(一個訂單對應一個用戶, 此處至關於一個類中的一個字段,該字段爲一個對象)spa

<association property="user" javaType="com.harbosoft.mybatis.po.User">
   <id  property="id" column="user_id"/>
   <result  property="username" column="username"/>
   <result  property="sex" column="sex"/>
   <result  property="address" column="address"/>
</association>

--一對多的關係處理(一個用戶有多個訂單,此處至關於一個類中的一個字段,該字段爲一個集合)code

<!-- 訂單信息 -->
<collection property="orders" ofType="com.harbosoft.mybatis.po.Orders">
   <!-- 訂單號 -->
   <result property="order_number" column="order_number" />
   <result property="id" column="id" />
</collection>

三者能夠嵌套使用

一個用戶--------多個訂單-------多個訂單明細

一個用戶--------多個訂單-------多個訂單明細--------多個商品

--select

public User findUserById(int id)
<select id="findUserById" parameterType="int"  resultType="user">
     SELECT * FROM USER WHERE id=#{id}  
     <!--
     id-------mapper接口的方法名;
     parameterType -------mapper接口的方法參數的類型
     resultType ---------mapper接口的方法的返回值類型 
     user ----------是別名(全名是com.harbosoft.mybatis.Items)
     id 和形參保持一致   (#)
     -->
</select>

--返回值是list   user

public List<User> findUserByName(String username)
<select id="findUserByName" parameterType="string" resultType="user">
    SELECT * FROM USER WHERE username like '${value}%' 
    <!--
    該方法返回值類型爲List,可是集合中裝的是user,因此resultType 的值只要和集合中存儲的同樣便可
     value 能夠隨意些,什麼均可以  ($)
    -->
</select>

--返回值是list   參數是user   resultType 

public List<User> findUserList(User user)throws Exception;
<!-- 綜合查詢用戶信息 -->
<select id="findUserList" parameterType="user" resultType="user">
    SELECT * FROM USER 
    <where>
    <!-- 用戶的查詢條件 -->
      <include refid="user_query_where"/>
      <!--該條SQL可能會重用,因此抽取出來,引用時用include-->
    </where>
</select>

 

<sql id="user_query_where">
          <if test="id!=null and id!=''">
             AND user.id=#{id}
          </if>

          <foreach collection="ids" item="id" open="and (" close=")" separator="or">
               user.id=#{id} and (userid =
          </foreach>
          <if test="username!=null and username!=''">
             AND user.username LIKE '${username}%'
          </if>
          <if test="sex!=null and sex!=''">
             AND user.sex = #{sex}
          </if>
</sql>

 

--返回值是List   resultMap 

public List<Person> findUserListResultMap(User user)throws Exception;
<!-- 綜合查詢用戶信息 使用resultMap-->
<select id="findUserListResultMap" parameterType="user" resultMap="resultMapPerson">
     SELECT * FROM USER WHERE username like '${username}%' and sex=#{sex}
</select>

--參數是map    hashmap   resultType

public List<User> findUserListByHashmap(Map map)throws Exception;
<!-- 經過hashmap查詢用戶信息 -->
<select id="findUserListByHashmap" parameterType="hashmap" resultType="user">
     SELECT * FROM USER WHERE username like '${name}%' and sex=#{sex}
</select>

--返回值是map    resultType

public Map findUserByIdReturnMap(int id) throws Exception;
<!-- 獲取單個用戶信息返回hashmap -->
<select id="findUserByIdReturnMap" parameterType="int"  resultType="hashmap">
     SELECT * FROM USER WHERE id=#{id}
</select>

--insert

public void insertUser(User user) throws Exception;
<insert id="insertUser" parameterType="user">
    <!--  
     keyProperty:指定主鍵映射的pojo對象的屬性
        order:selectKey的執行順序,mysql這裏設置爲after
        企業中實際使用時,主鍵一般使用uuid()即 SELECT UUID()
    -->
    <selectKey keyProperty="id" order="AFTER" resultType="int">
        SELECT LAST_INSERT_ID()
    </selectKey>

     INSERT INTO USER(username,birthday,sex,address,detail,score)
     VALUES(#{username},#{birthday},#{sex},#{address},#{detail},#{score})
</insert>

       

--update

public void updateUserById(User user) throws Exception;
<update id="updateUserById"  parameterType="com.harbsoft.mybatis.po.User">
      update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address},detail=#{detail},score=#{score}
      where id=#{id}
</update>

--delete

public void deleteUserById(int id) throws Exception;
<delete id="deleteUserById"  parameterType="java.lang.Integer">
        delete from user where id=#{value}
</delete>
相關文章
相關標籤/搜索