---上节课我们讲了Mybatis的单表增删改查,关于代码我注释的比较详细,我相信初学的小伙伴还是多少能有一些收获的.
- 第一集传送门:http://blog.csdn.net/jacxuan/article/details/62040956
-
---经过一段时间的沉寂之后,我们也应该提升一点难度,讲讲现在主流的Spring+Mybatis+Maven框架对数据库的操作了.
---Spring和Mybatis的工作原理在这个我就不多做赘述,在代码中如果有必要,我会解释.
接着上次的项目,我们需要在Maven的pom.xml中添加Spring和tomcat以及ojdbc的依赖.
<properties>
<spring.version>4.3.4.RELEASE</spring.version>
<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>
<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>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
如果你还不清楚怎么创建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">
<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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
@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交流.接下来几天将会实现更复杂的功能.