【spring-boot】mybatis配置以及分页查询

本次学习结合了swagger,swagger配置教程看【spring-boot】swagger配置

https://blog.****.net/nangu0673/article/details/82587268

1. 创建子模块zxw-mybatis,添加必要的依赖

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

</dependency>

 

<!--添加lombok依赖-->

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

</dependency>

 

<!-- mybatis以及mysql依赖-->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

</dependencies>

 

2. 在resources文件夹下创建文件application.properties,并在此配置数据源信息

spring.datasource.url=jdbc:mysql://localhost:3306/xxxxx?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false

spring.datasource.username= 数据库名

spring.datasource.password= 数据库密码

spring.datasource.driverClassName=com.mysql.jdbc.Driver

此配置与数据库相对应

【spring-boot】mybatis配置以及分页查询

 

3. 为了让mybatis自动生成mapper等文件,需要引入mybatis-generator插件。回到父模块zhangxianwen-test的pom文件中添加插件依赖(在父模块中添加后,所有子模块不用重新写依赖直接使用了)

<build>

<plugins>

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactId>

<version>1.3.2</version>

<configuration>

<verbose>true</verbose> //打印详细信息

<overwrite>true</overwrite>

</configuration>

</plugin>

</plugins>

</build>

添加之后reimport changes加载一下新的依赖,在MavenProjects窗口下即可看到此项目添加成功的依赖以及插件等信息。 ps:若出现红线波浪线并提示unknown,多为没有为此依赖定义版本号。

 

4. 为了让mybatis-generator插件生效,需为其制定相关配置文件。注意:mybatis-generator插件的功能执行实际上与项目无关,其仅仅作为一个附加功能,以第三方工具的形式为项目配置一些通用文件,提高开发速度,所以其所有的配置均独立(就不要问为啥在另一个地方配置了mysql了这儿还要配置的问题了)

在resources文件目录下新建文件 generatorConfig.xml,并填入内容:(此文件需要修改的地方背景标位蓝色)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE generatorConfiguration

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

<!-- 数据库驱动[需要修改] 添加本地的mysql包-->

<classPathEntry location="C:\Users\zhangxianwen\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar"/>

<context id="DB2Tables" targetRuntime="MyBatis3">

<commentGenerator>

<property name="suppressDate" value="true"/>

<!-- 是否去除自动生成的注释 true:是 : false:否 -->

<property name="suppressAllComments" value="true"/>

</commentGenerator>

<!--数据库链接URL,用户名、密码[需要修改] -->

<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/数据库名" userId="数据库用户名" password="数据库密码">

</jdbcConnection>

<javaTypeResolver>

<property name="forceBigDecimals" value="false"/>

</javaTypeResolver>

<!-- 生成模型的包名和位置[需要修改] 实体类-->

<javaModelGenerator targetPackage="com.tuhu.xwzhang.entity" targetProject="./src/main/java">

<property name="enableSubPackages" value="true"/>

<property name="trimStrings" value="true"/>

</javaModelGenerator>

<!-- 生成映射文件的包名和位置[需要修改] mapper.xml-->

<sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">

<property name="enableSubPackages" value="true"/>

</sqlMapGenerator>

<!-- 生成DAO的包名和位置[需要修改] mapper.java-->

<javaClientGenerator type="XMLMAPPER" targetPackage="com.tuhu.xwzhang.dao" targetProject="./src/main/java">

<property name="enableSubPackages" value="true"/>

</javaClientGenerator>

<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名[需要修改]-->

<table tableName="user" domainObjectName="User"/>

</context>

</generatorConfiguration>

 

配置完成后双击图中显示位置的mybatis-generator插件运行。

【spring-boot】mybatis配置以及分页查询

成功运行结果如图:

【spring-boot】mybatis配置以及分页查询

成功运行了就可以看到项目结构中多了三个文件对应在配置的 generatorConfig.xml文件的各个文件夹下:

【spring-boot】mybatis配置以及分页查询

此时,mybatis基本部署成功,现在编写一个实例对其功能进行测试。

 

5. 编写接口层,功能为查询user表数据

在包com.tuhu.xwzhang下创建包service,在此包内创建接口(Interface)类MyBatisService

【spring-boot】mybatis配置以及分页查询

package com.tuhu.xwzhang.service;

import com.tuhu.xwzhang.entity.User;

import java.util.List;

/**

* @author zhangxianwen

* Created 2018/8/18 21:48

*/

public interface MyBatisService {

List<User> query();

}

并创建此接口的实现类MyBatisServiceImpl,实现类使用implements声明一波。按ctrl+O快捷重写接口类的方法,默人返回null,如下:

package com.tuhu.xwzhang.service;

import com.tuhu.xwzhang.entity.User;

import java.util.List;

/**

* @author zhangxianwen

* Created 2018/8/18 21:49

*/

public class MyBatisServiceImpl implements MyBatisService{

@Override

public List<User> query() {

return null;

}

}

然后编写实现代码查询数据,如下

package com.tuhu.xwzhang.service;

 

import com.tuhu.xwzhang.dao.UserMapper;

import com.tuhu.xwzhang.entity.User;

import com.tuhu.xwzhang.entity.UserExample;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

 

import java.util.List;

 

/**

* @author zhangxianwen

* Created 2018/8/18 21:49

*/

 

/**

* 添加@Service注解

*/

@Service

public class MyBatisServiceImpl implements MyBatisService{

/**emmmmm 类似于初始化UserMapper类*/

@Autowired

private UserMapper userMapper;

 

@Override

public List<User> query() {

 

/** 在此项目中mybatis生成的UserMapper.Java文件中的查询语句只有selectByExample方法

* 其需要UserExample参数,所以初始化一个UserExample参数给它

* UserExample具体如何使用请自行学习

*/

UserExample userExample = new UserExample();

return userMapper.selectByExample(userExample);

}

}

 

6. 编写controller层的MyBatisController类用于调用接口获取数据并返回。在此使用了swagger相关知识,请看笔记【1】springboot+swagger配置了解。

package com.tuhu.xwzhang.controller;

 

import com.tuhu.xwzhang.entity.User;

import com.tuhu.xwzhang.service.MyBatisService;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RestController;

 

import java.util.List;

 

/**

* @author zhangxianwen

* Created 2018/8/18 21:42

*/

@RestController

@Api(value = "MyBatis学习")

public class MyBatisController {

@Autowired

private MyBatisService myBatisService;

 

@PostMapping("/query")

@ApiOperation("查询数据")

@ResponseBody

public List<User> queryUser(){

return myBatisService.query();

}

}

 

7. controller层实现之后,最重要的一步就是添加启动类了,在com.tuhu.xwzhang下添加启动类MyBatisApplication(就是建立普通类,之后再类头上添加@SpringBootApplication就成为启动类了),如下

package com.tuhu.xwzhang;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

 

/**

* @author zhangxianwen

* Created 2018/8/18 22:10

*/

@SpringBootApplication

public class MyBatisApplication {

 

public static void main(String[] args) {

SpringApplication.run(MyBatisApplication.class,args);

}

}

 

8. 接着就可以尝试跑项目了,然后就会收到错误

【spring-boot】mybatis配置以及分页查询

是因为没有告诉启动类mapper文件在哪儿,所以需要添加mapper扫描的注解@MapperScan("com.tuhu.xwzhang.dao")在启动类头上。

如下:

package com.tuhu.xwzhang;

 

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

 

/**

* @author zhangxianwen

* Created 2018/8/18 22:10

*/

/**扫描mapper*/

@MapperScan("com.tuhu.xwzhang.dao")

/**swagger启用注解,在swagger中有讲解,在此不重复说明*/

@EnableSwagger2

@SpringBootApplication

public class MyBatisApplication {

 

public static void main(String[] args) {

SpringApplication.run(MyBatisApplication.class,args);

}

}

 

then,DO IT!

打开swagger或者直接访问http://localhost:8080/query(这么访问的话需要在controller类中修改 @PostMapping("/query")为 @GetMapping("/query"))即可看到报错信息,哈哈哈!如下所示

【spring-boot】mybatis配置以及分页查询

 

这是因为缺少一点mybatis的相关配置,进入resources目录下的application.properties文件,添加内容:

#mapper配置

#com.tuhu.xwzhang.entity对应之前自动生成的数据库对应实体类的包

mybatis.type-aliases-package=com.tuhu.xwzhang.entity

mybatis.mapper-locations=classpath:mapper/*.xml

mybatis.configuration.cache-enabled=false

mybatis.configuration.map-underscore-to-camel-case=true

mybatis.configuration.use-generated-keys=true

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 

然后再运行项目吧!!!!(温馨提示:每次重新运行前请先停止当前进程,而不是直接点start或者debug,有时候会报错端口被占用)

接着就是成功的结果展示。

【spring-boot】mybatis配置以及分页查询

 

mybatis学习结束!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!现在建议去学习mybatis plus。会场方便,等之后有时间再出入门实例教程。