---上節課我們講了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交流.接下來幾天將會實現更復雜的功能.