简单搭建一个Spring boot,并通过MyBatis做数据库查询

工具: IDEA

数据库:MySQL

一、新建Spring boot项目

1.点击File——New——Project,做如下图操作后,点击next

mybatisplus与springboot版本对应关系表_xml

2.会看到下面这个界面,做一下解释:

Group默认的com.example,就是项目中的结构,一般example会替换成公司名称

Artifact默认demo,这里可以用一个单词来概括你的项目

然后单击next

.

mybatisplus与springboot版本对应关系表_xml_02

3.这里选择web,然后勾选上中间的web

mybatisplus与springboot版本对应关系表_bc_03

4.输入项目名称,点击Finish

mybatisplus与springboot版本对应关系表_xml_04

二、完善一下spring boot的结构

1.新建完项目,我们会得到一个简单的目录,需要说的是,这个项目的入口,就是在com.example.demo下的xxxxApplication,打开这个文件会发现主函数,由于spring boot里内置了Tomcat,所以启动项目时只需要在这里启动,端口号是8080。后面我们会再此提到这里,先往下看。

2.作为一个标准的web项目,controller、service、dao层是必备的,所以先建好这三个路径,例如我的路径(我建的项目名称与上述过程中默认的demo和example之类的字眼不一样):

mybatisplus与springboot版本对应关系表_bc_05

global这个包下是一些全局的处理,本文不做解释,新建springboot项目时也不需要这个包中的代码。

注意dao下,我又新建了一个testDao,然后在dao.testDao下建的ITestDao,这里注意一下,一会儿会有说明。

三、具体代码说明

1.controller

下面是我TestController的代码:

@RestController
@RequestMapping(value = "/myspring",params = "aa=test")
public class TestController {
    @RequestMapping(params={"bb=test_testController"})
    public String test_testContoller(String id){
        return testService.test(id);
    }

    @Autowired
    ITestService testService;
}

需要在controller上加入注解@RestController和@RequestMapping,其中RequestMapping中的value是通过http请求访问的地址,params(包括方法上的RestMappting)是用来标识访问地址中的哪一个controller的哪一个方法。

这里是需要传入一个String类型的id,然后在调用Service层的方法去做查询。

ITestService是我Service层的某一个接口。

2.service

@Service
public class TestServiceImpl implements ITestService{

    @Override
    public String test(String id) {
        return testDao.listById(id).get("name").toString();
    }
    @Autowired
    ITestDao testDao;
}

ITestService是一个简单的接口,没有什么可说的,这里的TestServiceImpl实现了接口,并加入@Service注解,表示这是service。(在我以前搭建项目时曾省略service层,直接调用dao,然后就会报错,我也不知道为什么,望大佬指点)

这里的ITestDao是dao层的接口,加入@Autowired注解会报错,这里不用管它,这是IDEA的问题。

通过dao层的方法listById获得一个Map<String,Object>的返回值,然后返回其中key为"name"的值。

3.dao

public interface ITestDao {
    public Map<String,Object> listById(@Param("id") String id);
}

这里dao只有接口,是因为我们用了MyBatis,以xml文件形式做查询,这里提前说明一下,@Param这个注解在参数只有一个的时候最好加上,参数大于等于2时则必须要加上。

三、MyBatis配置和使用

1.在pom.xml中导入mysql和mybatis的依赖

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.12</version>
</dependency>
		<!-- Spring Boot Mybatis 依赖 -->
<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.2.0</version>
</dependency>

2.配置

mybatisplus与springboot版本对应关系表_spring_06

这里我在resources文件夹下新建了config文件用来保存项目中的各种配置,并把application.propertis文件也移动到了config下

(1)mapper文件夹是mybatis实现dao接口的xml文件,一会儿会做详细说明。

(2)application.properties是spring的配置文件,我们在这里面添加一句话

mybatis.mapperLocations=classpath*:config/mapper/*.xml

  表示mapper的位置,是config下mapper中所有的xml文件,如果mapper下再分有多个文件夹,可以改成config/mapper/*/*.xml

(3)jdbc.properties是数据库配置文件,后边会做说明。

3.入口的配置

打开xxxxApplication(我这里是MySpringApplication),加入注解

@SpringBootApplication
@Configuration
@MapperScan("com.masart.demo.dao.*")
public class MySpringApplication {

    main...
}

前两个注解是springboot必须要加上的,在这里就不做过多说明了

@MapperScan()中的位置是项目中调用mybatis   xml文件的接口,也就是只有接口的dao层。需要注意的是这里并不是精确到了文件,而只是到了文件夹。在建立dao时我多建了一层,所以这里也就多了一个" * ",表示dao文件夹下的全部文件夹。这里很关键,一定要配对!

4.最最最最最关键的XML

我们用xml文件来实现dao的接口

<?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="com.masart.demo.dao.testDao.ITestDao">

    <select id="listById" resultType="java.util.HashMap">
        SELECT name from user where id = #{id}
    </select>

</mapper>

namespace是当前xml要实现接口的位置和名称

select中的id要和接口中的方法名一致,且唯一

#{id}代表接口中的@Param注解的名为"id"的参数,#的方式已经预处理过了,${id}则表示直接将${id}替换为名为"id"的参数

同样的,还有<delete><insert><update>等标签

四、JDBC

到这里,整个的结构已经出来了,但是还不能运行,因为没有配置数据库和JDBC啊!

1.首先在mysql数据库中建一个表,数据库名为test,表名为user,表有两列,id 和name,id类型为int,name类型为varchar(10),id为主键。然后随便插入几条数据。

2.配置连接池

@Configuration
@ComponentScan
@PropertySource(value= {"classpath:config/jdbc.properties"})
public class JdbcConfig {

    @Bean(name = "dataSource")
    @Qualifier("dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
}

这个方法我写在了global包下,根据自己的项目写在任意的位置即可。

@Configuration和@ComponentScan注解是必须的,@PropertiSource是jdbc配置文件的位置

这里用到了阿里的DruidDataSource配置连接池,非常好用,根据上面的写法照抄即可。

3.JDBC

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://ip:port/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=root

如果这个不行就去百度一个吧。。注意修改 ip和port!!!!!

五、启动  测试

至此,整个的项目已经搭建完成,在入口启动main方法,浏览器输入地址http://localhost:8080/myspring?aa=test&bb=test_testController&id=1即可访问。为什么是这个地址?看看controller就明白了。