快速构建一个SpringBoot+Mybatis+Mysql项目(详解)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/swadian2008/article/details/94880567

 

目录

一、快速构建项目

1、引入相关的核心依赖(最简配置)

(1)springboot的依赖,web容器

(2)MyBatis的依赖

(3)Mysql 驱动包

(4)Maven插件

2、配置文件:application.properties(极简)

3、简易代码(部分)

(1)控制层

(2)服务层

(3)数据访问层接口

(5)配置启动类(启动SpringBoot必须)

(6)数据库表信息

4、运行结果


一、快速构建项目

1、引入相关的核心依赖(最简配置)

(1)springboot的依赖,web容器

spring-boot-starter-parent

这是Spring Boot的父级依赖,标志当前的项目就是Spring Boot项目。
spring-boot-starter-parent 是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。

spring-boot-starter-web

在当下项目运行mvn spring-boot:run就可以直接启用一个嵌套了tomcat的web应用。
如果没有提供任何服务的Cotroller,访问任何路径都会返回一个springBoot默认的错误页面(Whitelabel error page)。

spring-boot-starter-web默认使用嵌套式的Tomcat作为Web容器对外提供HTTP服务,默认端口8080对外监听和提供服务。
我们同样可以使用spring-boot-starter-jetty或者spring-boot-starter-undertow作为Web容器。
想改变默认的配置端口,可以在application.properties中指定

(2)MyBatis的依赖

MyBatis-Spring-Boot-Starter

MyBatis-Spring-Boot-Starter依赖将会提供如下

自动检测现有的DataSource
将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递
将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。
使用了该Starter之后,只需要定义一个DataSource即可(application.properties或application.yml中可配置),它会自动创建使用该DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。会自动扫描你的Mappers,连接到SqlSessionTemplate,并注册到Spring上下文中。

(3)Mysql 驱动包

mysql-connector-java

数据库驱动是不同数据库开发商(比如oracle mysql等)为了某一种开发语言环境(比如java)能够实现统一的数据库调用而开发的一个程序,他的作用相当于一个翻译人员,将Java语言中对数据库的调用语言通过这个翻译翻译成各个种类的数据库自己的数据库语言。这个翻译(数据库驱动)是由各个开发商针对统一的接口自定义开发的。

(4)Maven插件

spring-boot-maven-plugin

Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。

POM文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>demo</groupId>
    <artifactId>com.test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <dependencies>
        <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>1.3.0</version>
        </dependency>
        <!-- MySQL 连接驱动依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、配置文件:application.properties(极简)

#最简数据库配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdemo?useSSL=false
spring.datasource.username=***
spring.datasource.password=***

#映射器,Mapper包下所有的xml文件
mybatis.mapper-locations=classpath:mapper/*.xml

数据库配置和Mybatis配置实际开发中还有很多,这里只是以一种最简洁的方式,能够启动项目就行

设置useSSL= false

原因是MySQL在高版本需要指明是否进行SSL连接,在程序运行时会出现标红提示

SSL协议:用于Web浏览器与服务器之间的身份认证和加密数据传输

mybatis.mapper-locations 

application上配置了@MapperScan(扫面mapper类的路径)和pom.xml中放行了mapper.xml后,配置mapper-locations没有意义

如果mapper类和mapper.xml不在同一个路径下时,配置mapper-locations,用mapper-locations指定mapper.xml的路径。

3、简易代码(部分)

(1)控制层

User实体类略(都是get和set,详细字段请看下方表数据)

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("demo/User/selectUser")
    public Object selectUser(){
        User user = new User();
        user.setName("xiaohong");
        return userService.selectUserByName(user);
    }

}

@RestController注解(返回数据给页面)
相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要再方法前面加@ResponseBody注解
但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

(2)服务层

接口部分

public interface UserService {

    List<User> selectUserByName(User user);

}

实现部分

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> selectUserByName(User user) {
        return userMapper.selectUserByName(user);
    }

}

(3)数据访问层接口

@Mapper
public interface UserMapper {

    List<User> selectUserByName(User user);

}

(4)Map.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="demo.mapper.UserMapper" >

    <select id="selectUserByName" parameterType="demo.entity.User" resultType="demo.entity.User">
        select id ,name ,age
        from USER
        where name like
              CONCAT('%', #{name}, '%')
    </select>

</mapper>

namespace="demo.mapper.UserMapper"  

namespace是域名空间,这个配置非常重要,指定到Mapper的具体映射接口(使用接口全限定名称),既面向接口编程。

当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动

请注意接口中的方法与映射文件中的SQL语句的ID一一对应

(5)配置启动类(启动SpringBoot必须)

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(MyApplication.class);
        try {
            SpringApplication.run(MyApplication.class);
            logger.info("springBoot启动成功...");
        } catch (Exception e) {
            logger.info("SpringBoot启动失败...");
        }
    }
}

(6)数据库表信息

4、运行结果

启动SpringBoot,在浏览器上输入“http://localhost:8080/demo/User/selectUser”(笔者本人的本地路径),调用成功

猜你喜欢

转载自blog.csdn.net/swadian2008/article/details/94880567