1、SpringBoot整合MyBatis

1.1 application.yml

# 数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/kh96_ssm_airms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
username: root
password: root # mybatis 核心配置
mybatis:
configuration:
map-underscore-to-camel-case: true # 下划线 映射 驼峰
mapper-locations: classpath:mybatis/mapper/*.xml # 自定义mapper映射路径
# config-location: classpath:mybatis-config.xml # mysql配置文件

1.2 实体类

@Data
public class Quality { //编号
private Integer id; //地区id
private Integer did; //检测时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone =" GMT+8")
private Date monitorTime; //pm10
private Integer pm10; //pm25
private Integer pm25; //监测站
private String monitorStation; //修改时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone =" GMT+8")
private Date lastModifyTime; }

1.3 mapper 和 service

1.3.1 QualityMapper

public interface QualityMapper {

    //根据空气质量编号,修改空质量
Integer updateQualityById(Quality qualityForm); }

1.3.2 QualityMapper.xml

<!--
根据空气质量编号,修改空质量
Integer updateQualityById(Quality qualityForm);
-->
<update id="updateQualityById">
update air_quality
<set>
<if test="id != null"> `id` = #{id},</if>
<if test="did != null"> `did` = #{did},</if>
<if test="monitorTime != null"> `monitor_time` = #{monitorTime},</if>
<if test="pm10 != null"> `pm10` = #{pm10},</if>
<if test="pm25 != null"> `pm25` = #{pm25},</if>
<if test="monitorStation != null"> `monitor_station` = #{monitorStation},</if>
<if test="lastModifyTime != null"> `last_modify_time` = #{lastModifyTime},</if>
</set>
where `id` = #{id}
</update>

1.3.3 service

//接口
public interface QualityService {
boolean modifyQualityById(Quality qualityForm);
} //实现类
@Service
public class QualityServiceImpl implements QualityService { @Autowired
private QualityMapper qualityMapper; @Override
public boolean modifyQualityById(Quality qualityForm) {
return qualityMapper.updateQualityById(qualityForm) > 0;
}
}

1.4 测试

1.4.1 控制层

@Slf4j
@RestController
public class AirQualityController { @Autowired
private QualityService qualityService; //根据空气质量编号,修改空质量,使用xml映射文件
@PostMapping("/modQuality")
public Map<String,String> testModifyQualityMapperXml(@RequestBody Quality qualityForm){ //返回集合
Map<String,String> returnMap = new HashMap<>(); //调用业务接口,修改空气详情
if(qualityService.modifyQualityById(qualityForm)){
returnMap.put("code","200");
returnMap.put("msg","Success"); return returnMap;
} returnMap.put("code","9999");
returnMap.put("msg","Fail"); return returnMap; } }

1.4.2 Postman 测试

测试:

测试结果:

2、逆向工程 better-mybatis-generator 插件

2.1 下载插件 better-mybatis-generator

2.2 自动生成代码

2.2.1 idea连接数据库

2.2.2 生成代码

2.2.2.1 选中表,右键点击 mybatis-gengrate

2.2.2.2 生成代码 设置

生成的代码:

2.3 测试

2.3.1 service

2.3.1.1 接口
public interface AirQualityService {

	//根据条件查询空气质量列表
List<AirQuality> getQualityListByExample(AirQualityExample airQualityExample); }
2.3.1.2 实现类
@Service
public class AirQualityServiceImpl implements AirQualityService { @Autowired(required = false)
private AirQualityMapper airQualityMapper; @Override
public List<AirQuality> getQualityListByExample(AirQualityExample airQualityExample) {
return airQualityMapper.selectByExample(airQualityExample);
} }

2.3.1 测试代码

@GetMapping("/airQualities")
public List<AirQuality> testAirQualityListUseBackward(){ log.info("------ 根据 查询条件,查询空气质量的列表 --------"); //创建查询条件对象
AirQualityExample airQualityExample = new AirQualityExample(); //如果需要去重,增加条件
airQualityExample.setDistinct(true); //如果需要排序,增加排序条件
airQualityExample.setOrderByClause(" id desc "); //添加自定义查询 条件,监测站名称中包含检测的
AirQualityExample.Criteria criteria = airQualityExample.createCriteria(); //criteria.andMonitorStationLike("%"+monitorStation+"%");
criteria.andMonitorStationLike("%监测%"); //区域编号 大于1
//criteria.andDidGreaterThan(1); //区域编号在指定列表中
//criteria.andDidIn(Arrays.asList(1,2,3,4,5)); //增加or的查询条件
AirQualityExample.Criteria criteriaOr = airQualityExample.createCriteria();
criteriaOr.andPm10GreaterThan(100); //拼接or的查询条件
airQualityExample.or(criteriaOr); //如果需要分页,增加分页参数 limit ${offset}, ${limit}
//起始行 (偏移量参数)
airQualityExample.setOffset(2l);
//返回数据量
airQualityExample.setLimit(5); //调用业务接口,查询空气质量列表
List<AirQuality> qualityListByExample = airQualityService.getQualityListByExample(airQualityExample); return qualityListByExample;
}

2.3.2 测试结果:

2.4 分析查询条件对象

2.4.1 基本查询条件

2.4.2 字段上的查询条件

2.5 分析 创建 xxxExample.Criteria 自定义查询条件

protected List<Criteria> oredCriteria;  //oredCriteria 是一个 Criteria 的 集合

//创建条件类 方法
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria); // 创建第一个Criteria的时候会自动加入集合中
}
return criteria;
} //or 拼接 条件 方法
public void or(Criteria criteria) {
oredCriteria.add(criteria); //其他Criteria 条件,调用方法拼接时 也会 动加入集合中
}

3、JPA

3.1 JPA 配置

# jpa 核心配置
spring:
jpa:
show-sql: true # 显示sql查询
hibernate:
ddl-auto: update #如果不存在,就新建,如果存在只更新

3.2 测试

3.2.1 实体 bean

3.2.1.1 实体类

注意

1、如果数据库没有该表自动生成该表

2、如果该表已经存在也需要填写这些注解信息,要不然会出现实体跟数据库不对应的错误

@Data
@Entity
@Table(name = "air_user",catalog = "kh96_ssm_airms")
//指定jpa建表的表名,如果指定,默认使用类名作为表名,catalog是指定数据库实例名
public class AirUser { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; //用户名
@Column(name = "name",length = 32)
private String name; //密码
@Column(name = "pwd",length = 32)
private String pwd; //手机号
@Column(name = "tel",length = 11)
private String tel; }
3.2.1.2 生成的表

启动项目;

3.2.2 AirUserRepository

public interface AirUserRepository extends JpaRepository<AirUser,Integer> {

}

3.2.3 service

3.2.3.1 接口
public interface AirUserService {

    //@description : 根据用户编号,查询用户详情
AirUser getAirUserById(Integer id); }
3.2.3.2 实现类
@Service
public class AirUserServiceImpl implements AirUserService { @Autowired
private AirUserRepository airUserRepository; @Override
public AirUser getAirUserById(Integer id) {
return airUserRepository.findOne(id);
}
}

3.2.4 测试代码

@RestController
public class AirQualityController { @Autowired
private AirUserService airUserService; @GetMapping("/airUser")
public AirUser AirUserTestAirUserUserJPA(@RequestParam("Id") Integer Id){ return airUserService.getAirUserById(Id); } }

3.2.5 测试结果

SpringBoot (四) - 整合Mybatis,逆向工程,JPA的更多相关文章

  1. SpringBoot系列-整合Mybatis(注解方式)

    目录 一.常用注解说明 二.实战 三.测试 四.注意事项 上一篇文章<SpringBoot系列-整合Mybatis(XML配置方式)>介绍了XML配置方式整合的过程,本文介绍下Spring ...

  2. SpringBoot之整合Mybatis(增,改,删)

    一,在上一篇文章SpringBoot之整合Mybatis中,我们使用spring boot整合了Mybatis,并演示了查询操作.接下来我们将完善这个示例,增加增,删,改的功能. 二,改动代码 1.修 ...

  3. SpringBoot 3.SpringBoot 整合 MyBatis 逆向工程以及 MyBatis 通用 Mapper

    一.添加所需依赖,当前完整的pom文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...

  4. SpringBoot系列-整合Mybatis(XML配置方式)

    目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...

  5. springboot(二)整合mybatis,多数据源和事务管理

     -- 1.整合mybatis -- 2.整合多数据源 -- 3. 整合事务 代码地址:https://github.com/showkawa/springBoot_2017/tree/master/ ...

  6. 【springboot】整合 MyBatis

    转自:https://blog.csdn.net/cp026la/article/details/86493503 1. 简介: 目前,国内大部分公司都使用 MyBatis作为持久层框架.本章整合My ...

  7. SpringBoot之整合Mybatis范例

    依赖包: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...

  8. 从零开始的SpringBoot项目 ( 四 ) 整合mybatis

    一.创建一个SpringBoot项目 从零开始的SpringBoot项目 ( 二 ) 使用IDEA创建一个SpringBoot项目 二.引入相关依赖 <!--mysql数据库驱动--> & ...

  9. SpringBoot之整合MyBatis

    今天了解一下SpringBoot如何与我们最常用的ORM框架Mybatis整合. 一. 需要在pom.xml文件里加入mybatis的依赖 <dependency> <groupId ...

随机推荐

  1. RocketMQ 详解系列

    什么是RocketMQ RocketMQ作为一款纯java.分布式.队列模型的开源消息中间件,支持事务消息.顺序消息.批量消息.定时消息.消息回溯等.主要功能是异步解耦和流量削峰:. 常见的MQ主要有 ...

  2. 对于Java中的Loop或For-each,哪个更快

    Which is Faster For Loop or For-each in Java 对于Java中的Loop或Foreach,哪个更快 通过本文,您可以了解一些集合遍历技巧. Java遍历集合有 ...

  3. Linux 基于源码安装 Redis

    1.下载 Redis: 前往 Redis 官网复制 Redis 相应版本的下载链接,到终端下载 2. 进入到指定目录, 下载 redis.tar.gz 包,运行 wget + 复制的下载链接  例如: ...

  4. [CF1519D] Maximum Sum of Products (暴力)

    题面 有两个长为 n n n 的序列 a a a 和 b b b,至多反转 a a a 的一个子区间,最大化 ∑ i = 1 n a i ⋅ b i \sum_{i=1}^na_i\cdot b_i ...

  5. 【JDBC】学习路径1-JDBC背景知识

    学习完本系列JDBC课程后,你就可以愉快使用Java操作我们的MySQL数据库了. 各种数据分析都不在话下了. 第一章:废话 JDBC编程,就是写Java的时候,调用了数据库. Java Databa ...

  6. 踩坑,发现一个ShardingJdbc读写分离的BUG

    ShardingJdbc 怎么处理写完数据立即读的情况的呢? 写在前面 我本地使用了两个库来做写库(ds_0_master)和读库(ds_0_salve),两个库并没有配置主从. 下面我就使用库里的 ...

  7. KingbaseES ksqlrc文件介绍

    ksqlrc文件作用 ksql在连接到数据库后但在接收正常的命令之前,会尝试读取并执行该文件中的命令,如果加上-X参数,则跳过该文件. 系统级的启动文件是ksqlrc,文件在安装好的KingbaseE ...

  8. 以软件定义物联网芯片,以技术融合推动LPWAN2.0泛在物联

    作为数字化产业重要的基础设施之一,物联网迎来了黄金发展期.物联网通信技术通过数据的采集.分析.输出,从浅层次的互联工具和产品深化,到成为重塑生产组织方式的基础设施和关键要素,正深刻地改变着传统产业形态 ...

  9. this的指向问题、bind/call/apply改变this指向

    this的指向问题 全局作用域下的this指向 无论是否是严格模式,全局作用域下的this始终指向window 函数内部的this 严格模式下: function test() { 'use stri ...

  10. vCenter 升级错误 VCSServiceManager 1603

    近日,看到了VMware发布的vCenter 6.7 Update 1b的更新消息.其中有一条比较震撼.有误删所有VM的概率,这种BUG谁也承受不起. Removing a virtual machi ...