srpingboot和mybatis整合

springbootSSM项目下载地址

链接:https://pan.baidu.com/s/11fwh1C7ZOg3jQVlXl2DJjQ
提取码:83yt

依赖

     <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency>

mybatis自动代码生成

application.properties

server.port=8090
server.servlet.context-path=/spring
#thymeleaf
# \u524d\u7f00
spring.thymeleaf.prefix=classpath:/templates/
## \u540e\u7f00
spring.thymeleaf.suffix=.htmlspring.datasource.url=jdbc\:mysql\://XXX\:3306/goods?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Drivermybatis.mapper-locations=classpath:com/testfan/model/*.xml
mybatis.type-aliases-package=com.testfan.model
#\u5206\u9875\u63d2\u4ef6
mybatis.config-location=classpath:mybatis-config.xml#\u7ed9\u4ee3\u7801\u751f\u6210\u63d2\u4ef6\u4f7f\u7528  \u5982\u679c\u662f mac\u7cfb\u7edf\u8def\u5f84\u4fee\u6539\u6210 /
jdbc.driverPath=D:\\repository\\mysql\\mysql-connector-java\\5.1.47\\mysql-connector-java-5.1.47.jar
#\u751f\u6210\u7684\u5305\u54ea\u91cc
target_package=com.testfan
#\u5de5\u7a0b\u8def\u5f84  \u5982\u679c\u662f mac\u4fee\u6539\u6210src/main/java
project=src\\main\\javalogging.level.com.testfan.dao=debug

自动代码生成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><properties resource="application.properties" /><!-- 指定数据连接驱动jar地址 -->  <classPathEntry location="${jdbc.driverPath}" />  <!-- 此处指定生成针对MyBatis3的DAO --><context id="context" targetRuntime="MyBatis3"><!-- 生成的Java文件的编码 --><property name="javaFileEncoding" value="UTF-8"/><!-- 格式化java代码 --><property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/><!-- 格式化XML代码 --><property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/><!--beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号;--><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><!-- 为生成的Java模型创建一个toString方法 --><plugin type="org.mybatis.generator.plugins.ToStringPlugin" /><!-- 添加序列号方法 --><plugin type="org.mybatis.generator.plugins.SerializablePlugin" /><!-- 重命名插件 --><plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /><plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin"><property name="searchString" value="Example$" /><property name="replaceString" value="Criteria" /></plugin><!-- 去掉生成出来的代码的注解 --><commentGenerator><property name="suppressAllComments" value="true" /><property name="suppressDate" value="true" /></commentGenerator><!--数据库链接URL,用户名、密码 --><jdbcConnection driverClass="${spring.datasource.driver-class-name}"connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}" password="${spring.datasource.password}"></jdbcConnection><!-- 默认false,表示把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer; true表示把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 生成bean对象 --><javaModelGenerator targetPackage="${target_package}.model"targetProject="${project}"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="true" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!-- 生成sqlMap xml --><sqlMapGenerator targetPackage="${target_package}.model"targetProject="${project}"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- 生成DAO的类文件 --><javaClientGenerator targetPackage="${target_package}.dao"targetProject="${project}" type="XMLMAPPER"><property name="enableSubPackages" value="true" /></javaClientGenerator><!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
<!--         <table tableName="user_t" domainObjectName="TUser" -->
<!--          enableCountByExample="false" enableUpdateByExample="false" -->
<!--                 enableDeleteByExample="false" enableSelectByExample="false" -->
<!--                 selectByExampleQueryId="false"> -->
<!--             <property name="useActualColumnNames" value="false" /> -->
<!--         </table> --><table tableName="t_user_test" domainObjectName="UserTest"/></context>
</generatorConfiguration>

自动代码生成:

选中项目或者pom.xml,右键–》RunAs–》maven build

运行命令:mybatis-generator:generate

生成文件:

使用

使用TUserMapper需要添加注解@MapperScan,默认不能被扫描

可以添加全局扫描,这样每个Mappe对象就可以不用加注解了,路径可以根据实际写

启动springboot项目,访问

sprinboot单元测试

junit单元测试

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import com.testfan.model.UserTestCriteria;
import com.testfan.model.UserTestCriteria.Criteria;@RunWith(SpringRunner.class)
@SpringBootTest   //扫描SpringbootTestApplication启动类,启动类扫描mapper
class UserTestMapperTest {@AutowiredUserTestMapper userTestMapper;@Testvoid testSelectByExample() {UserTestCriteria userTestCriteria=new UserTestCriteria();Criteria criteria1=userTestCriteria.createCriteria();criteria1.andLoginnameLike("test%");userTestMapper.selectByExample(userTestCriteria);}}

springboot之swagger

swagger在线接口文档

SpringBootSwagger项目下载地址

链接:https://pan.baidu.com/s/1wtNGquYAfwJ0UG3IBYAkPQ
提取码:xtqv

启动项目RunAs–>Spring Boot App

访问: http://localhost:8023/swagger-ui.html

Swagger基础使用

依赖

     <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.4.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.4.0</version></dependency>

SwaggerConfiguration.java配置swagger描述等信息

注意:1.添加注解@Configuration、@EnableSwagger2,才能被扫描。

2.注意根据controller所在包路径填写路径;//暴露接口地址的包路径

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfiguration {/*** swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等* @return*/@Beanpublic Docket createRestfulApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.lance.learn.springbootswagger.controller"))  //暴露接口地址的包路径.paths(PathSelectors.any()).build();}/*** 构建 api文档的详细信息函数,注意这里的注解引用的是哪个* @return*/private ApiInfo apiInfo(){return new ApiInfoBuilder()//页面标题.title("Spring Boot 测试使用 Swagger2 构建RESTful API")//创建人.contact(new Contact("testfan", "http://ask.testfan.cn", "917484312@qq.com"))//版本号.version("2.0")//描述.description("API 描述").build();}
}

swagger参数说明

@Api:用在类上,说明该类的作用。

@ApiOperation:注解来给API增加方法说明。

@ApiImplicitParams : 用在方法上包含一组参数说明。

示例演示前后端对比

请求参数是json对象

对象需要添加注解@ApiModel、@ApiModelProperty

swagger与springbootSSM集成

依赖

     <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.4.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.4.0</version></dependency>

拷贝SwaggerConfiguration.java配置swagger描述等信息

注意修改接口地址的路径为实际路径

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfiguration {/*** swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等* @return*/@Beanpublic Docket createRestfulApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.testfan.controller"))  //暴露接口地址的包路径.paths(PathSelectors.any()).build();}/*** 构建 api文档的详细信息函数,注意这里的注解引用的是哪个* @return*/private ApiInfo apiInfo(){return new ApiInfoBuilder()//页面标题.title("Spring Boot 测试使用 Swagger2 构建RESTful API")//创建人.contact(new Contact("testfan", "http://ask.testfan.cn", "917484312@qq.com"))//版本号.version("2.0")//描述.description("API 描述").build();}}

启动项目访问: http://localhost:8090/spring/swagger-ui.html#/

错误演示

如果是@RequestMapping,需要添加请求类型,如果是@GetMapping、@PostMapping则不用。

swagger与yapi结合

两者结合产生接口测试文档

步骤:1.访问 http://localhost:8023/v2/api-docs ,右键,另存为xxx.json文件

使用docker搭建yapi服务,启动yapi服务,把xxx.json文件导入到yapi中

导入成功后,页面如下:

从yapi导出html格式到本地

打开html文件

thymeleaf与springboot整合

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

html页面的使用需要带 th:标签

<span th:text="${msg}"></span>
<input type="text" name="username" th:value="${msg}"/>
<span th:text="${#dates.format(key,'yyy/MM/dd')}"></span>
<span th:text="${#dates.year(key)}"></span>
<table border="1"><tr><th>ID</th><th>Name</th><th>Age</th><th>Index</th><th>Count</th><th>Size</th><th>Even</th><th>Odd</th><th>First</th><th>lase</th></tr><tr th:each="u,var : ${list}"><td th:text="${u.userid}"></td><td th:text="${u.username}"></td><td th:text="${u.userage}"></td><td th:text="${var.index}"></td><td th:text="${var.count}"></td><td th:text="${var.size}"></td><td th:text="${var.even}"></td><td th:text="${var.odd}"></td><td th:text="${var.first}"></td><td th:text="${var.last}"></td></tr></table>
 <!-- if标签额使用 --><span th:if="${sex} == '男'">性别:男</span><span th:if="${sex} == '女'">性别:女</span><hr/><div th:switch="${id}"><span th:case="1">ID为1</span><span th:case="2">ID为2</span><span th:case="3">ID为3</span></div>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Thymeleaf-URL</title>
</head>
<body><a href="http://www.baidu.com">绝对路径</a><br/><a th:href="@{http://www.baidu.com}">thyemleaf绝对路径</a><br/><hr/><a th:href="@{/show}">相对路径</a><hr/><a th:href="@{/show(id=1,name=zhagnsan)}">相对路径-传参</a><hr/><a th:href="@{/path/{id}/show(id=1,name=zhagnsan)}">相对路径-传参-restful</a>
</body>
</html>

资源访问方式

<script type="text/javascript" th:src="@{/js/main.js}"></script> 

lombok环境配置

先下载lombok.jar包,然后切换到lombok.jar文件夹,cmd运行java -jar lombok.jar

lombok.jar下载地址:

链接:https://pan.baidu.com/s/1JHeMvLf9rupA9ztxSkUnfA
提取码:t8ke

以上lombok安装的实质是:将lombok.jar ,拷贝到sts安装目录下,然后在sts.ini配置信息中添加了lombok包路径

项目中使用:

依赖架包:

     <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency>

使用效果如下,免写set\get方法,主要使用注解@Data

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor //所有参数构造方法
@NoArgsConstructor  //无参数构造方法
public class BookLombok {private String bid;private String bname;private String author;
}

常用注解:
@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

idea教程

MybatisPlus介绍

springboot_mybatisplus项目下载:

链接:https://pan.baidu.com/s/1VzxXOUSITDFJ9Hcv1bCVNA
提取码:ae80

依赖架包

     <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.2</version></dependency>

dao继承了BaseMapper,跟springmybatis相比,免写了XXMapper.xml

import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mybatisplus.springboot.entity.User;public interface UserMapper extends BaseMapper<User> {//自定义sql@Select("SELECT * from  user_t where user_name=#{name}")public List<User> selectByName(String name);}

对象和数据库表对应关系,通过注解@TableName,主键对应通过@TableId,属性通过注解@TableField

主键生成策略:IdType

测试使用如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusSpringbootApplicationTests {@AutowiredUserMapper userMapper;@AutowiredTBookMapper tbookMapper;@Autowired @Qualifier("bookservice")ITBookService bookService;@Testpublic void contextLoads() {QueryWrapper<User> qw=new QueryWrapper<User>();qw.eq("user_name", "haha11");qw.eq("id", "2002");qw.or();qw.eq("age", 18);userMapper.selectList(qw);}
}

执行sql:

mybatis-plus and支持

QueryWrapper qryWrapper = new QueryWrapper();
qryWrapper.eq("id", "1");
qryWrapper.eq("password", "1");
userMapper.selectList(qryWrapper);

mybatis-plus or支持

QueryWrapper qryWrapper = new QueryWrapper();
qryWrapper.eq("id", "1");
qryWrapper.like("id", "1");
qryWrapper.or();
qryWrapper.eq("password", "1");

mybatisPlus自定义sql如下:

import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mybatisplus.springboot.entity.User;public interface UserMapper extends BaseMapper<User> {//自定义sql@Select("SELECT * from  user_t where user_name=#{name}")public List<User> selectByName(String name);
}

Mybatis-Plus官网

https://mp.baomidou.com/guide/generator.html

mybatisPlus相比mybatis简化了很多,mapper里面不用写方法,继承了extends BaseMapper,对象user通过注解@TableName(“表名”)与数据库形成对应关系

自定义sql,使用注解@Select

import java.util.List;import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mybatisplus.springboot.entity.User;/*** <p>* user Mapper 接口*/
public interface UserMapper extends BaseMapper<User> {//自定义sql@Select("SELECT * from  user_t where user_name=#{name}")public List<User> selectByName(String name);}

mybatisPlus自动代码生成

Mybatis-Plus官网

https://mp.baomidou.com/guide/generator.html

运行CodeGenerator.java,输入模块名usertest,输入数据库表名t_user_test,自动生成controller、entity、mapper、service

pom.xml依赖

     <!-- mybaits-plus自动代码生成 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><!-- velocity 模板引擎, 默认 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency><!-- freemarker 模板引擎 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency><!-- beetl 模板引擎 --><dependency><groupId>com.ibeetl</groupId><artifactId>beetl</artifactId><version>2.9.8</version></dependency>

CodeGenerator.java自动生成代码运行此文件,注意修改数据库配置信息


import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** <p>* mysql 代码生成器演示例子* </p>*/
public class CodeGenerator {/*** <p>* 读取控制台内容* </p>*/public static String scanner(String tip) {Scanner scanner = new Scanner(System.in);StringBuilder help = new StringBuilder();help.append("请输入" + tip + ":");System.out.println(help.toString());if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotEmpty(ipt)) {return ipt;}}throw new MybatisPlusException("请输入正确的" + tip + "!");}/*** RUN THIS*/public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir");gc.setOutputDir(projectPath + "/src/main/java");gc.setAuthor("wys_testfan");gc.setOpen(false);gc.setSwagger2(true);mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://118.24.13.38:3308/goods?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");// dsc.setSchemaName("public");dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("zhangsan");dsc.setPassword("123123");mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();pc.setModuleName(scanner("模块名"));pc.setParent("com.mybatisplus.springboot");mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};List<FileOutConfig> focList = new ArrayList<>();focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输入文件名称return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);mpg.setTemplate(new TemplateConfig().setXml(null));// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//设置生成实体类的继承类,不需要可不用,我这注释掉了
//        strategy.setSuperEntityClass("com.example.demo.entity");strategy.setEntityLombokModel(true);
//设置生成controller类的继承类,不需要可不用,我这注释掉了
//        strategy.setSuperControllerClass("com.example.demo.controller");strategy.setInclude(scanner("表名"));strategy.setSuperEntityColumns("id");strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(pc.getModuleName() + "_");mpg.setStrategy(strategy);// 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}}

运行:

生成包名 及mapper xml文件

MyBatis-Plus 代码生成参数改动说明

核心Config类作用

GlobalConfig (设置代码作者,日期 等信息)

PackageConfig (设置父包相关配置)

TemplateConfig (设置代码生成模板相关配置)

StrategyConfig (设置相关生成策略)

代码中相关修改

// strategy.setSuperEntityClass(“com.testfan.BaseEntity”); 去掉官网的父类继承

打开实体类swagger 支持

globalConfig .setSwagger2(true);

mapper.xml 文件生成 BaseResultMap
globalConfig .setBaseResultMap(true);

使用自动代码生成后的代码

1、自动代码生成的,使用@autowired 注入service找到两个会报错,需要在service中添加注解,根据名字获取

修改后在service实现类中添加名字

@Service("userTestServiceabc")
public class TUserTestServiceImpl extends ServiceImpl<TUserTestMapper, TUserTest> implements ITUserTestService {}

2、执行保存没有主键,需要在对象TUserTest中添加主键@TableId(type = IdType.UUID)

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;/*** <p>* * </p>** @author wys_testfan* @since 2020-05-13*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="TUserTest对象", description="")
public class TUserTest implements Serializable {private static final long serialVersionUID = 1L;@TableId(type = IdType.UUID)private String uid;private String loginname;private String loginpass;}

使用代码:

package com.mybatisplus.springboot;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mybatisplus.springboot.Book.entity.TBook;
import com.mybatisplus.springboot.Book.mapper.TBookMapper;
import com.mybatisplus.springboot.Book.service.ITBookService;
import com.mybatisplus.springboot.dao.UserMapper;
import com.mybatisplus.springboot.entity.User;
import com.mybatisplus.springboot.usertest.entity.TUserTest;
import com.mybatisplus.springboot.usertest.service.ITUserTestService;@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusSpringbootApplicationTests {@AutowiredUserMapper userMapper;@AutowiredTBookMapper tbookMapper;//@Resource(name = "userTestServiceabc")@Autowired @Qualifier("userTestServiceabc") //找不到通过name查找ITUserTestService userTestService;//@Resource(name = "bookservice")@Autowired @Qualifier("bookservice")ITBookService bookService;@Testpublic void userTest1() {TUserTest usertest=new TUserTest();usertest.setLoginname("loginname_wang");usertest.setLoginpass("loginpass_123456");userTestService.save(usertest);QueryWrapper qw=new QueryWrapper();qw.likeRight("loginname", "login");userTestService.count(qw);}//@Testpublic void contextLoads() {QueryWrapper<User> qw=new QueryWrapper<User>();qw.eq("user_name", "haha11");qw.eq("id", "2002");qw.or();qw.eq("age", 18);userMapper.selectList(qw);}//   @Testpublic void test2() {userMapper.selectByName("haha11");}//  @Testpublic void test3() {QueryWrapper<TBook> qw=new QueryWrapper<TBook>();tbookMapper.selectList(qw);}//@Test@Transactionalpublic void test4() {TBook book=new TBook();book.setBname("java测试开发");book.setAuthor("wys");bookService.save(book);QueryWrapper<TBook> qw=new QueryWrapper<TBook>();qw.like("bname", "Java");int c=bookService.count(qw);System.out.println(c);
//      bookService.list(qw);}}

3.脏数据自动回滚,使用注解@Transactional

4.支持复杂查询,使用QueryWrapper

 @Test@Transactionalpublic void userTest1() {TUserTest usertest=new TUserTest();usertest.setLoginname("loginname_wang");usertest.setLoginpass("loginpass_123456");userTestService.save(usertest);QueryWrapper qw=new QueryWrapper();qw.likeRight("loginname", "login");userTestService.count(qw);}

mybatisPlus自动代码生成2

第二种自动代码生成可以生成多个表数据

运行代码:

注意修改数据库,和要生成的表名。


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;public class CodeGenerator2 {public static void main(String[] args) {// 指定包名String packageName = "com.mybatisplus.springboot";// user -> UserService, 设置成true: user -> IUserServiceboolean serviceNameStartWithI = false;// 指定生成的表名String[] tableNames = new String[] { "t_role", "t_case", "t_order" };generateByTables(serviceNameStartWithI, packageName, tableNames);}/*** 配置数据源* * @return 数据源配置 DataSourceConfig* @author Terry*/private static DataSourceConfig getDataSourceConfig() {String dbUrl = "jdbc:mysql://192.168.21.134:3306/goods?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8";return new DataSourceConfig().setDbType(DbType.MYSQL).setUrl(dbUrl).setUsername("root").setPassword("123456").setDriverName("com.mysql.jdbc.Driver");}/*** 根据表自动生成* * @param serviceNameStartWithI 默认为false* @param packageName           包名* @param tableNames            表名* @author Terry*/private static void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {// 配置数据源DataSourceConfig dataSourceConfig = getDataSourceConfig();// 策略配置StrategyConfig strategyConfig = getStrategyConfig(tableNames);// 全局变量配置GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI);// 包名配置PackageConfig packageConfig = getPackageConfig(packageName);// 自动生成atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig);}/*** 集成* * @param dataSourceConfig 配置数据源* @param strategyConfig   策略配置* @param config           全局变量配置* @param packageConfig    包名配置* @author Terry*/private static void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig,GlobalConfig config, PackageConfig packageConfig) {new AutoGenerator().setGlobalConfig(config).setDataSource(dataSourceConfig).setStrategy(strategyConfig).setPackageInfo(packageConfig).execute();}/*** 设置包名* * @param packageName 父路径包名* @return PackageConfig 包名配置* @author Terry*/private static PackageConfig getPackageConfig(String packageName) {return new PackageConfig().setParent(packageName).setXml("mapper").setMapper("dao").setController("controller").setEntity("entity");}/*** 全局配置* * @param serviceNameStartWithI false* @return GlobalConfig* @author Terry*/private static GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) {GlobalConfig globalConfig = new GlobalConfig();globalConfig.setBaseColumnList(true).setBaseResultMap(true).setActiveRecord(false).setAuthor("Terry")// 设置输出路径.setOutputDir(getOutputDir()).setFileOverride(true);if (!serviceNameStartWithI) {// 设置service名globalConfig.setServiceName("%sService");}return globalConfig;}/*** 返回项目路径* * @param projectName 项目名* @return 项目路径* @author Terry*/private static String getOutputDir() {String projectPath = System.getProperty("user.dir");return  projectPath + "/src/main/java/";}/*** 策略配置* * @param tableNames 表名* @return StrategyConfig* @author Terry*/private static StrategyConfig getStrategyConfig(String... tableNames) {return new StrategyConfig()// 全局大写命名 ORACLE 注意.setCapitalMode(true).setEntityLombokModel(false)// 从数据库表到文件的命名策略.setNaming(NamingStrategy.underline_to_camel)// 需要生成的的表名,多个表名传数组.setInclude(tableNames);}
}

Day14(springboot与mybatis整合、mybatis自动代码生成、swagger、thymeleaf、lombok环境配置、mybatisPlus介绍(自动代码生成))相关推荐

  1. 利用IDEA搭建SpringBoot项目,整合mybatis,实现简单的登录功能。

    利用IDEA搭建SpringBoot项目,整合mybatis,实现简单的登录功能. 仅供参考!!! 仅供参考!!! 仅供参考!!! 利用闲余时间想自己搭建一个springboot+mybatis的项目 ...

  2. SpringBoot 实战 (九) | 整合 Mybatis

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,本文通过注解的形式实 ...

  3. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    我们这一一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我 ...

  4. 玩转 SpringBoot 2.x 整合 Mybatis

    前言 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  5. SpringBoot 2.x 整合Mybatis一:基础

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80694228 本文出自[赵彦军的博客] 什么是 MyBatis ? MyBatis ...

  6. springboot实现快速整合mybatis+mysql

    springboot如今火爆的程度大有将传统的ssm比下去的势头,究其原因,还是springboot被越来越多的公司使用,其简洁的配置,优秀的封装性,便捷的全注解开发,同时由于和越来越多的其他框架进行 ...

  7. Java使用lambda进行分页,SpringBoot(八):整合mybatis,通用mapper,分页插件,lambda,Logger,junit用法...

    本文作者:低调小熊猫 转载声明:自由转载-非商用-非衍生-保持署名,非商业转载请注明作者及出处,商业转载请联系作者本人qq:2696284032 整合demo 配置依赖 tk.mybatis mapp ...

  8. SpringBoot 2.x 整合Mybatis三:tk.mybatis

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80734057 本文出自[赵彦军的博客] 简介 地址:https://github. ...

  9. SpringBoot 2.x 整合Mybatis二:PageHelper分页

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80696898 本文出自[赵彦军的博客] Mybatis-PageHelper 简介 ...

最新文章

  1. poj 2034 Anti-prime Sequences(dfs)
  2. HTML基础第六讲---表格
  3. Openstack的nova-network的vlan模式扩展
  4. eggjs使用cheerio爬取数据
  5. fortran 和 java_JNA实现Java调用Fortran
  6. 关于财务业务模型的思考
  7. 关于(object sender, EventArgs e)
  8. CSS top、margin-top和padding-top的区别
  9. internal/modules/cjs/loader.js:584
  10. 国外赛事直播加速案例
  11. python随机生成无序列表_python实现无序列表:链表
  12. 如何用r语言分析数据
  13. win10没有计算器怎么办【系统天地】
  14. “苦逼”程序员的日常,你了解吗?
  15. Agilent安捷伦81150A脉冲信号发生器 信号源
  16. 分析的某储值卡数据库部分结构
  17. Fiddle原理和基本使用
  18. vue php聊天室,Laravel + Swoole 打造IM简易聊天室
  19. 数据科学家访谈系列:谢梁(微软)
  20. python 打印1-100以内的所有质数

热门文章

  1. 【Markdown】如何用 Markdown 写好数学表达式
  2. 机器学习之道学习笔记
  3. c语言开题报告中的文件与格式,大学论文开题报告格式要求.docx
  4. c 语言中cin用法,c中cin的用法
  5. 66666666666
  6. GIF 4.0+版本sig生成方法分享
  7. 2022年微信表情怎么保存到手机相册呢
  8. 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 1 章 答案
  9. Netapp磁盘聚合划分
  10. 控制儿童在什么时段使用计算机,利用家长控制限制孩子使用电脑时间,让其只能学习不能玩游戏...