mybatis框架的關(guān)聯(lián)配置:
首先假設(shè)我們數(shù)據(jù)庫(kù)中有兩個(gè)表,一個(gè)表示move,另一個(gè)是moveType,move里面有一個(gè)字段typeid,與moveType表里面的id相對(duì)應(yīng)。相信大家已經(jīng)看出來了,一個(gè)moveType對(duì)應(yīng)多個(gè)move,我們查詢move字段的時(shí)候,必要的時(shí)候得顯示moveType的內(nèi)容,比如我的move的name是:《A計(jì)劃>,那么對(duì)應(yīng)的我的moveType就是動(dòng)作片,而不是直接顯示的id,有人說這不就是sql的內(nèi)連接查詢么?非也,你用sql的內(nèi)連接是顯示不出來MoveType里面的name的,那么,對(duì)于這種情況我們?cè)撛趺床樵兡??怎么配置呢?/p>
從最基本的實(shí)體類開始:
首先我們創(chuàng)建一個(gè)Move的實(shí)體類,與數(shù)據(jù)庫(kù)中的move表相對(duì)應(yīng),代碼如下:
public class Move {
private Long id; //電影id
private MoveType type; //電影類型
private String name; //電影名稱
private String actor; //電影主演
private String director; //電影導(dǎo)演
private Integer price; //電影價(jià)格
}
在這里我們省略getter和setter方法,直接在創(chuàng)建一個(gè)實(shí)體類,MoveType,此類與數(shù)據(jù)庫(kù)中的moveType表相對(duì)應(yīng),代碼如下:
public class MoveType {
private Integer id;
private String typeName;
}
同樣我們省略getter和setter方法,咱們?cè)谌ソㄒ粋€(gè)dao接口,IMoveDao,與Move類相對(duì)應(yīng),代碼如下:
public interface IMoveDao {
/**
*
* @Title: saveMove
* @Description: 添加電影
* @param @param move
* @param @return 設(shè)定文件
* @return int 返回類型
* @throws
*/
public int saveMove(Move move);
/**
*
* @Title: queryMoveByTerm
* @Description: 動(dòng)態(tài)查詢電影
* @param @param mt
* @param @return 設(shè)定文件
* @return List
* @throws
*/
public List
}
接著在創(chuàng)建個(gè)IMoveTypeDao接口類,與實(shí)體類MoveType相對(duì)應(yīng):
public interface IMoveTypeDao {
/**
*
* @Title: getAllMoveTypes
* @Description: 查詢?nèi)康碾娪邦愋?/p>
* @param @return 設(shè)定文件
* @return List
* @throws
*/
public List
}
光有了實(shí)體類和dao接口還遠(yuǎn)遠(yuǎn)不夠,正兒八經(jīng)的配置還沒開始呢。
我們先配置MoveDaoMapper.xml的映射文件,同樣,此映射文件對(duì)應(yīng)的是IMoveDao接口,這個(gè)比較復(fù)雜,咱們慢慢的來,代碼如下:
(1)先把頭部拿出來:
<?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”>
(2)映射Move實(shí)體類的字段屬性
<!-- 映射Move實(shí)體類的字段屬性 -->
<!-- type=“move” 等價(jià)于type=“org.entity.Move”-->
<!-- 關(guān)聯(lián)MoveType實(shí)體類, -->
<!-- type:實(shí)體類Move中的type對(duì)象 -->
<!-- typeid:數(shù)據(jù)表Move的typeid -->
<!-- selectMoveType:映射的是實(shí)體類MoveType -->
select=“selectMoveType” />
(3)映射實(shí)體類MoveType
<!-- 映射實(shí)體類MoveType -->
<!-- type=“moveType” 等價(jià)于type=“org.entity.MoveType”一樣 -->
(4)對(duì)應(yīng)的moveType的映射
<!-- selectMoveType與上面MoveType實(shí)體類的select相對(duì)應(yīng) -->
<!-- moveTypeMapper與上面映射實(shí)體類MoveType的id相對(duì)應(yīng) -->
select * from movetype where id=#{typeid}
(5)下面就是咱們?cè)贒ao層里面方法的sql實(shí)現(xiàn)了
<!-- 添加電影 -->
insert into
move
(id,typeId,name,actor,director,price)
values
(#{id},#{type.id},#{name},#{actor},#{director},#{price})
<!-- 動(dòng)態(tài)查詢電影 -->
最后記得用
到此,我們的MoveDaoMapper.xml的配置就結(jié)束了,下面我們來配置一下MoveTypeDaoMapper.xml,請(qǐng)看代碼:
?<?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”>
select * from movetype
這里面只有一個(gè)查詢所有電影類型的方法,所以比較簡(jiǎn)單,重點(diǎn)和難點(diǎn)還是都在MoveDaoMapper.xml里面,最后我在附加一個(gè)動(dòng)態(tài)查詢的條件類吧:
?public class MoveTerm {
private Long id; //電影id
private MoveType type; //電影類型
private String name; //電影名稱
private String actor; //主演
private String director; //導(dǎo)演
private Integer smallPrice; //最低價(jià)格
private Integer bigPrice; //最高價(jià)格
}
省略getter和setter方法。
好了,配置到此結(jié)束。
評(píng)論