欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解MyBatis的getMapper()接口、resultMap標(biāo)簽、Alias別名、 盡量提取sql列、動(dòng)態(tài)操作

 更新時(shí)間:2016年08月30日 09:53:58   作者:葉子。  
這篇文章主要介紹了詳解MyBatis的getMapper()接口、resultMap標(biāo)簽、Alias別名、 盡量提取sql列、動(dòng)態(tài)操作的相關(guān)資料,需要的朋友可以參考下

一、getMapper()接口

  解析:getMapper()接口 IDept.class定義一個(gè)接口,

     掛載一個(gè)沒(méi)有實(shí)現(xiàn)的方法,特殊之處,借樓任何方法,必須和小配置中id屬性是一致的

     通過(guò)代理:生成接口的實(shí)現(xiàn)類名稱,在MyBatis底層維護(hù)名稱$$Dept_abc,selectDeptByNo()

     相當(dāng)于是一個(gè)強(qiáng)類型

Eg

  第一步:在cn.happy.dao中定義一個(gè)接口   

package cn.happy.dao;
import java.util.List;
import cn.happy.entity.Dept;
public interface IDeptDao {
//查看全部---------getAllDept要和小配置里面的id一樣
public List<Dept> getAllDept();
}

  第二步:IDept.xml配置小配置

  解析:select里面的Id屬性要和接口里面的接口方法名一樣;mapper的namespace屬性包名是cn.happy.dao.IDeptDao接口

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.happy.dao.IDeptDao">
<select id="getAllDept" resultType="cn.happy.entity.Dept">
select * from Dept 
</select>
</mapper>

  第三步:測(cè)試類

  解析:查看全部信息有兩種方法

     1)session.selectList("cn.happy.dao.IDeptDao.getAllDept");-------實(shí)體類.小配置里面的Id名稱============字符串

     2)IDeptDao mapper = session.getMapper(IDeptDao.class);相當(dāng)于實(shí)現(xiàn)類,getMapper是一個(gè)強(qiáng)類型

// 01查看全部信息getMapper()接口類的方法名要和小配置的id一樣
@Test
public void testSelectAll() {
SqlSession session = factory.openSession();
//用的是弱類型========實(shí)體類.小配置里面的Id名稱============字符串
/*List<Dept> list = session.selectList("cn.happy.dao.IDeptDao.getAllDept");
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}*/
// 用getMapper方法HIbernate幫我們?cè)趦?nèi)存中代理出一個(gè)接口的實(shí)現(xiàn)類======相當(dāng)于強(qiáng)類型
//mapper是一個(gè)實(shí)現(xiàn)類對(duì)象
IDeptDao mapper = session.getMapper(IDeptDao.class);
List<Dept> list = mapper.getAllDept();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}

  第四步:全文統(tǒng)一用一個(gè)大配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- Alias別名 小配置里面的type的屬性值改成別名-->
<typeAliases>
<typeAlias type="cn.resultMap.enetity.Emp" alias="emp"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="sa" />
<property name="password" value="1" />
</dataSource>
</environment>
</environments>
<!--映射文件:描述某個(gè)實(shí)體和數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系 -->
<mappers>
<mapper resource="cn/resultMap/enetity/Emp.xml" />
</mappers>
</configuration>

二、resultMap標(biāo)簽

    解析:使用的場(chǎng)景是當(dāng)實(shí)體類的屬性與數(shù)據(jù)庫(kù)不匹配的時(shí)候需要用到resultMap實(shí)體類和數(shù)據(jù)庫(kù)的屬性必須一致。(之前用的是實(shí)體類)

Eg檢索所有員工,以及隸屬部門(mén)

  第一步:創(chuàng)建一個(gè)接口

package cn.resultMap.dao;
import java.util.List;
import cn.resultMap.enetity.Emp;
public interface IEmpDao {
//檢索所有員工,以及隸屬部門(mén)
public List<Emp> getAllEmps();
}

   第二步:配置小配置里面的屬性

  解析: 員工角度 多的一方,嵌入一的一方的各個(gè)屬性請(qǐng)使用association 是關(guān)聯(lián)(如果去掉association的話就是基礎(chǔ)的resultMap)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.resultMap.dao.IEmpDao">
<resultMap type="cn.resultMap.enetity.Emp" id="empMap">
<id property="empId" column="EMPID"/>
<result property="empName" column="EMPNAME"/>
<result property="empCity" column="EMPCITY"/>
<!-- 員工角度 多的一方,嵌入一的一方的各個(gè)屬性請(qǐng)使用association -->
<association property="dept" javaType="cn.resultMap.enetity.Dept">
<result property="deptName" column="DEPTNAME"/>
<result property="deptNo" column="DEPTNO"/>
</association>
</resultMap>
<select id="getAllEmps" resultMap="empMap">
select e.*,d.* from Emp e,Dept d
where e.deptNo=d.deptNo
</select>
</mapper>

第三步:測(cè)試類

//resultMap:實(shí)體的屬性名和表的字段名保證一致用resultMap
//如果報(bào)NullException查看小配置的映射關(guān)聯(lián)resultMap是否配置
@Test
public void testAllEmp(){
SqlSession session=factory.openSession();
IEmpDao mapper = session.getMapper(IEmpDao.class);
List<Emp> allEmps = mapper.getAllEmps();
for (Emp emp : allEmps) {
System.out.println(emp.getEmpName()+"\t隸屬部門(mén)"+emp.getDept().getDeptName());
}
session.close();
}

第四步:在大配置引入小配置

三、提取sql列

  解析:Sql標(biāo)簽簡(jiǎn)化代碼量在小配置里面寫(xiě)

<!-- SQl標(biāo)簽的使用 -->
<sql id="columns">
d.deptNo,d.deptName
</sql>
<!-- SQl標(biāo)簽的使用 -->
<select id="getAllEmps" resultMap="empMap">
select e.*,<include refid="columns"/>from Emp e,Dept d
where e.deptNo=d.deptNo
</select>

四、Alias別名

    解析:在大配置上寫(xiě),這樣的話在小配置就可以引用別名了  

<!-- Alias別名 小配置里面的type的屬性值改成別名-->
<typeAliases>
<typeAlias type="cn.resultMap.enetity.Emp" alias="emp"/>
</typeAliases>

五、動(dòng)態(tài)操作

解析:用于實(shí)現(xiàn)動(dòng)態(tài)SQL的元素主要有:

 if
    choose(when,otherwise)
    where 
    set 

Eg  查看在北京城市的人員

  第一步:接口

package cn.resultMap.dao;
import java.util.List;
import cn.resultMap.enetity.Emp;
public interface IEmpDao {
//檢索所有員工,以及隸屬部門(mén)
public List<Emp> getAllEmps();
}

  第二步:小配<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.resultMap.dao.IEmpDao">
<resultMap type="cn.resultMap.enetity.Emp" id="empMap">
<id property="empId" column="EMPID"/>
<result property="empName" column="EMPNAME"/>
<result property="empCity" column="EMPCITY"/>
<!-- 員工角度 多的一方,嵌入一的一方的各個(gè)屬性請(qǐng)使用association -->
<association property="dept" javaType="cn.resultMap.enetity.Dept">
<result property="deptName" column="DEPTNAME"/>
<result property="deptNo" column="DEPTNO"/>
</association>
</resultMap>
<select id="getAllEmps" resultMap="empMap">
select e.*,d.* from Emp e,Dept d
where e.deptNo=d.deptNo
</select>
<!--查詢動(dòng)態(tài)查詢 -->
<select id="testAllEmpBuSelect" parameterType="cn.resultMap.enetity.Emp" resultType="cn.resultMap.enetity.Emp">
select * from Emp
<where>
<if test="empId!=null">
and empId=#{empId}
</if>
<if test="empName!=null">
and empName=#{empName}
</if>
<if test="empCity!=null">
and empCity=#{empCity}
</if>
</where>
</select>
</mapper>

第三步:測(cè)試

//動(dòng)態(tài)查詢
@Test
public void testSelect(){
SqlSession session=factory.openSession();
Emp emp=new Emp();
//emp.setEmpName("331");
emp.setEmpCity("sh");
List<Emp> list = session.selectList("cn.resultMap.dao.IEmpDao.testAllEmpBuSelect",emp);
for (Emp emps : list) {
System.out.println(emps.getEmpName());
}
session.close();
}

第四步:在大配置引入小配置

Eg    修改部門(mén)信息

  第一步:接口

  第二步:小配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.resultMap.dao.IDeptDao">
<resultMap type="cn.happy.entity.Dept" id="deptResultMap">
<id property="deptNo" column="deptNo"/>
<result property="deptName" column="deptName"/>
</resultMap>
<select id="getAllDept" resultMap="deptResultMap">
select d.*,e.* from Dept d,Emp e
where d.deptNo=e.deptNo and d.deptNo=#{deptNo}
</select>
<!--修改動(dòng)態(tài)查詢 -->
<select id="testUpdate" parameterType="int" resultType="cn.resultMap.enetity.Dept">
update dept
<set>
<if test="deptNo!=null">
deptNo=#{deptNo},
</if>
<if test="deptName!=null">
deptName=#{deptName},
</if>
</set>
where deptNo=#{deptNo}
</select>
</mapper> 

  第三步:測(cè)試 

/**
* 動(dòng)態(tài)修改
* */
@Test
public void testUpdate(){
SqlSession session=factory.openSession();
Dept dept=new Dept();
dept.setDeptName("財(cái)務(wù)部");
dept.setDeptNo(1);
int count = session.update("cn.resultMap.dao.IDeptDao.testUpdate",dept);
session.commit();
System.out.println(count);
session.close();
}

以上所述是小編給大家介紹的詳解MyBatis的getMapper()接口、resultMap標(biāo)簽、Alias別名、 盡量提取sql列、動(dòng)態(tài)操作,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件

    SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件,感興趣的小伙伴們可以參考一下
    2016-06-06
  • IDEA插件之快速刪除Java代碼中的注釋

    IDEA插件之快速刪除Java代碼中的注釋

    這篇文章主要介紹了IDEA插件之快速刪除Java代碼中的注釋,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java實(shí)現(xiàn)一致性Hash算法詳情

    Java實(shí)現(xiàn)一致性Hash算法詳情

    這篇文章主要介紹了Java實(shí)現(xiàn)一致性Hash算法詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • ArrayList底層操作機(jī)制源碼解析

    ArrayList底層操作機(jī)制源碼解析

    這篇文章主要介紹了ArrayList底層操作機(jī)制源碼解析,當(dāng)創(chuàng)建ArrayList對(duì)象時(shí),如果使用的是無(wú)參構(gòu)造器,則初始elementData容量為0,第1次添加,則擴(kuò)容elementData為10,如需要再次擴(kuò)容,則擴(kuò)容elementData為1.5倍,需要的朋友可以參考下
    2023-09-09
  • Java編程復(fù)用類代碼詳解

    Java編程復(fù)用類代碼詳解

    這篇文章主要介紹了Java編程復(fù)用類代碼詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • mybatis?mapper.xml中如何根據(jù)數(shù)據(jù)庫(kù)類型選擇對(duì)應(yīng)SQL語(yǔ)句

    mybatis?mapper.xml中如何根據(jù)數(shù)據(jù)庫(kù)類型選擇對(duì)應(yīng)SQL語(yǔ)句

    這篇文章主要介紹了mybatis?mapper.xml中如何根據(jù)數(shù)據(jù)庫(kù)類型選擇對(duì)應(yīng)SQL語(yǔ)句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • mybatis中的limit參數(shù)解讀

    mybatis中的limit參數(shù)解讀

    這篇文章主要介紹了mybatis中的limit參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java的設(shè)計(jì)模式之代理模式使用詳解

    Java的設(shè)計(jì)模式之代理模式使用詳解

    這篇文章主要介紹了Java的設(shè)計(jì)模式之代理模式使用詳解,代理模式是23種設(shè)計(jì)模式之一,它關(guān)心的主要是過(guò)程,而不是結(jié)果,代理模式主要提供了對(duì)目標(biāo)對(duì)象的間接訪問(wèn)方式,即通過(guò)代理對(duì)象來(lái)訪問(wèn)目標(biāo)對(duì)象,需要的朋友可以參考下
    2024-01-01
  • log4j2動(dòng)態(tài)修改日志級(jí)別及拓展性使用詳解

    log4j2動(dòng)態(tài)修改日志級(jí)別及拓展性使用詳解

    這篇文章主要介紹了log4j2動(dòng)態(tài)修改日志級(jí)別及拓展性使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 詳解Java項(xiàng)目中讀取properties文件

    詳解Java項(xiàng)目中讀取properties文件

    本篇文章主要介紹了Java項(xiàng)目中讀取properties文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-12-12

最新評(píng)論