SSMybatis整合 -- 加入SpringMVC进行多表级联操作

来源:互联网 发布:贵州毕节网络诈骗犯 编辑:程序博客网 时间:2024/06/08 00:11
---上节课我们讲了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>
  • 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">        <!--其他映射字段上一篇文章中已给出-->        <!--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>
  • 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
@Controller

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

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

“` 
这里我们队多表最具代表性的增加操作进行了演示,其他操作同理!小伙伴们自己琢磨琢磨,有不同的可以在blog中私我,或者加我qq:1287538157交流.接下来几天将会实现更复杂的功能.