SpringBoot整合Mybatis以及SpringMVC

第一步:搭建SpringBoot项目

搭建的方式参考其他教程

第二步:导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<!--添加jsp依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-spec</artifactId>
    <version>1.2.5</version>
</dependency>
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.5</version>
</dependency>
<!--json报文处理相关-->
<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.2.3</version>
    <classifier>jdk15</classifier>
</dependency>

第三步:添加配置

# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
#数据库连接参数的配置
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = 123456
#mapper映射文件的位置
mybatis.mapper-locations: classpath:mapper/*.xml
#实体类的位置
mybatis.type-aliases-package: com.xc.springboot.domain
#当遇到同样名字的时候,是否允许覆盖注册
spring.main.allow-bean-definition-overriding=true

第四步:创建mapper文件

在resources中创建文件夹mapper,并创建文件MusicInfoMapper.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xc.springboot.dao.mapper.MusicInfoMapper">
    <resultMap id="BaseResultMap" type="com.xc.springboot.dao.domain.MusicInfo">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="singer_name" jdbcType="VARCHAR" property="singerName" />
        <result column="music_size" jdbcType="VARCHAR" property="musicSize" />
        <result column="music_name" jdbcType="VARCHAR" property="musicName" />
    </resultMap>
</mapper>

第五步:创建数据库实体类

package com.xc.springboot.dao.domain;
public class MusicInfo {
    // 主键id
   
private Integer id;

    // 歌手名
   
private String singerName;

    // 歌曲大小
   
private String musicSize;

    // 歌曲名
   
private String musicName;

    /**
     *
获取 主键id music_info.id
     *
     * @return
主键id
     */
   
public Integer getId() {
        return id;
    }

    /**
     *
设置 主键id music_info.id
     *
     * @param
id 主键id
     */
   
public void setId(Integer id) {
        this.id = id;
    }

    /**
     *
获取 歌手名 music_info.singer_name
     *
     * @return
歌手名
    
*/
   
public String getSingerName() {
        return singerName;
    }

    /**
     *
设置 歌手名 music_info.singer_name
     *
     * @param
singerName 歌手名
    
*/
   
public void setSingerName(String singerName) {
        this.singerName = singerName == null ? null : singerName.trim();
    }

    /**
     *
获取 歌曲大小 music_info.music_size
     *
     * @return
歌曲大小
    
*/
   
public String getMusicSize() {
        return musicSize;
    }

    /**
     *
设置 歌曲大小 music_info.music_size
     *
     * @param
musicSize 歌曲大小
    
*/
   
public void setMusicSize(String musicSize) {
        this.musicSize = musicSize == null ? null : musicSize.trim();
    }

    /**
     *
获取 歌曲名 music_info.music_name
     *
     * @return
歌曲名
    
*/
   
public String getMusicName() {
        return musicName;
    }

    /**
     *
设置 歌曲名 music_info.music_name
     *
     * @param
musicName 歌曲名
    
*/
   
public void setMusicName(String musicName) {
        this.musicName = musicName == null ? null : musicName.trim();
    }

    @Override
    public String toString() {
        return "MusicInfo{" +
                "id=" + id +
                ", singerName='" + singerName + '\'' +
                ", musicSize='" + musicSize + '\'' +
                ", musicName='" + musicName + '\'' +
                '}';
    }
}

第六步:创建dao层代码

@Repository("musicInfoMapper")
public interface MusicInfoMapper {
    //使用Mapper注解可以达到相同的目的
   
@ResultMap("BaseResultMap")
    @Select("select * from music_info")
    List<MusicInfo> selectAll();
}

第七步:service层代码省略

第八步:编写controller层代码

@Controller
public class IndexController {
private static final String SHOW = "show";
    @Autowired
    private MusicInfoService musicInfoService;
    @RequestMapping("/show")
    @ResponseBody
    public String getMusicInfo(HttpServletRequest request) {
        List<MusicInfo> musicInfoList = musicInfoService.getMusicInfo();
        request.getSession().setAttribute("list", musicInfoList);
        return SHOW;
}
}

第九步:编写前端代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
</head>
<body>
<table>
    <tr>
        <td>歌曲编号</td>
        <td>歌手姓名</td>
        <td>歌曲大小</td>
        <td>歌曲名称</td>
    </tr>
    <c:if test="${sessionScope!=null}">
        <c:forEach var="list" items="${sessionScope.list}">
            <tr>
                <td>${list.id}</td>
                <td>${list.singerName}</td>
                <td>${list.musicSize}</td>
                <td>${list.musicName}</td>
            </tr>
        </c:forEach>
    </c:if>
</table>
</body>
</html>

第十步:启动服务,访问地址

http://localhost:8080/show

第十一步:浏览器输出如下结果

歌曲编号 歌手姓名 歌曲大小 歌曲名称

1        小三     3.2M     起风了

2        刘德华   3.0M     忘情水

3        猪点点   5.0M     会写程序的小猪

 

 

补充内容:注解含义

1、@PostMapping:映射一个POST请求

2、@RequestMapping:Spring Web应用程序中常用注解,作用是将HTTP请求映射到MVC和REST控制器的处理方法上,查看源码,发现@PostMapping注解上存在@RequestMapping注解

3、@GetMapping:处理GET请求

 

4、@ResponseBody:作用是将Controller方法返回的对象,通过适当的转换器转换为指定的格式之后,写入到Response对象的响应体中(Body区),通常用来返回JSON数据,或者XML数据

5、@RestController:相当于@ResponseBody+@Controller注解的组合,如果使用该注解,则Controller中的方法无法返回jsp页面,或者html页面,配置的视图解析器不起作用,染回的内容,就是Return中的内容

6、@Controller:该注解需要配合视图解析器使用,如果需要返回JSON、XML或者自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解

 

7、@RequestBody:主要用来接收前端传递给后端的JSON数据

8、@RequestParam:一个请求,只有一个@RequestBody,但是可以有多个

 

9、@Mapper:注解的作用1、将mapper这个dao交给Spring管理2、为了不再写mapper映射文件3、为了给添加@Mapper注解的接口自动生成实现类

10、@ResultMap:注解的作用1、解决列名和属性名不一致的情况2、多表关联查询

 

posted @ 2020-05-11 10:00  Java精进之路  阅读(269)  评论(0编辑  收藏  举报