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 測驗結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516278.html
標籤:Java
上一篇:實踐GoF的設計模式:代理模式
