SSMybatis整合(二) -- 加入SpringMVC進行多表級聯操作


---上節課我們講了Mybatis的單表增刪改查,關於代碼我注釋的比較詳細,我相信初學的小伙伴還是多少能有一些收獲的.
- 第一集傳送門:http://blog.csdn.net/jacxuan/article/details/62040956
- 
---經過一段時間的沉寂之后,我們也應該提升一點難度,講講現在主流的Spring+Mybatis+Maven框架對數據庫的操作了.
---Spring和Mybatis的工作原理在這個我就不多做贅述,在代碼中如果有必要,我會解釋.
接着上次的項目,我們需要在Maven的pom.xml中添加Spring和tomcat以及ojdbc的依賴.
<properties>
        <!-- spring版本號 -->
        <spring.version>4.3.4.RELEASE</spring.version>
        <!-- mybatis版本號 -->
        <mybatis.version>3.4.2</mybatis.version>
        <jdk.version>1.8</jdk.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
    <!--Spring核心包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.2</version>
        </dependency>
    <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!--jsp頁面中將會使用jstl表達式-->
    <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--非必需,如果你報index_jsp.class錯誤,大部分情況下將這個依賴刪除后同步Maven可以解決-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina</artifactId>
            <version>8.0.32</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.7.4</version>
        </dependency>   
    </dependencies>

如果你還不清楚怎么創建Maven項目,在這里講述可能過於冗長,請參考我的另一篇blog
傳送門:http://blog.csdn.net/JacXuan/article/details/63322034

——-普通的增刪改查在這里就不多做贅述,我們講講級聯表的操作怎么實現.
–首先,你得在一方實體中包含你多方的集合,在多方實體中加入一方的對象.並分別提供他們的get set方法
如:
private List emps; —–private Dept dept
之后需要我們在Mybatis中與實體對應的Mapper文件進行配置

<resultMap type="Emp" id="empResultMap">
        <!--其他映射字段上一篇文章中已給出-->
        <!--property:一方的類型,這里是實體類聲明(Dept dept)的字段;column:數據庫中這個字段的實際列明,你可以理解為外鍵的列名,select:通過select里面的方法查詢到一方表的數據,這樣以后在頁面就可以直接讀取-->
        <association property="dept" column="deptNo" select="com.jacx.mapper.DeptMapper.queryById"></association>
    </resultMap>
    <!--這是一方對應字段的配置,具體意思和多方差異不大,不多贅述-->
    <collection property="emps" ofType="Dept" column="deptNo" select="com.jacx.mapper.EmpMapper.queryByType"></collection>
```級聯操作除了增加的語句有些變化之外,改/查/刪並無區別,增加語句也只是把外鍵字段改為#{實體中的外鍵名(dept).關聯表的ID(deptNo)},如果有多個外鍵值,同理.
    ----寫完查詢語句后,我們就可以像ssh一樣寫DAO層代碼了!
    --不知道各位小伙伴有沒有想到,Mybatis的Mapper不就是和Dao一樣對數據庫進行操作嗎,那么我們還需不需要DAO層呢?
    - - 再想想,Service層需要調用Mapper的方法,但是Mapper是個xml文件,是不能通過service調用里面的業務邏輯的.所以,我們需要一個和Mapper一樣的DAO接口,來滿足service的要求.這個DAO接口要求我們名稱必須要和對應Mapper文件完全一致,除非你在Spring的配置文件中進行聲明!
    - - - 我們不做過多講解,直接創建.
    -DAO --  `public List<Emp> queryAll(Pager<Emp> pager);`
    public void add(Emp emp);
    -Service `public void add(Emp emp);`
    -serviceImpl 





<div class="se-preview-section-delimiter"></div>

@Service
public class EmpService implements IEmpService {
@Autowired
private EmpMapper empMapper;
public void add(Emp emp) {
empMapper.add(emp);
}

    action代碼(注意action的命名必須是*Action/*Actions)除此之外都會運行報錯!




<div class="se-preview-section-delimiter"></div>
@Controller

@RequestMapping(“/emp”)
public class EmpAction {

@Autowired
private IEmpService empService;

@RequestMapping("add")
public String add(Emp emp){
    empService.add(emp);
    return "redirect:/emp/queryAll";
}

“`
這里我們隊多表最具代表性的增加操作進行了演示,其他操作同理!小伙伴們自己琢磨琢磨,有不同的可以在blog中私我,或者加我qq:1287538157交流.接下來幾天將會實現更復雜的功能.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM