change to jpa

master
hwf453 2 years ago
parent 16488f3c23
commit 9e4237513b

@ -0,0 +1,32 @@
package com.rehome.adminclientappmqttserveryf.entity;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
/**
* @author huangwenfei
* @since 2023-08-28
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class Userzy implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String nfc;
@Column( length = 32)
private String date;
}

@ -42,7 +42,8 @@ spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.jdbc.Driver # 8.0 com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
url: jdbc:mysql://192.168.2.18:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
username: root
password: Skyinno251,
jpa:

@ -18,6 +18,10 @@
<spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
@ -67,29 +71,11 @@
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- mybatis plus 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<!--引入druid数据源-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@ -107,19 +93,6 @@
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
@ -135,6 +108,11 @@
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
</dependencies>
<dependencyManagement>

@ -1,6 +1,8 @@
package com.rehome.adminclientappmqttserver;
import com.rehome.adminclientappmqttserver.controller.UserController;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.controller.UserzyController;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
@ -11,14 +13,17 @@ import com.google.gson.Gson;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import java.util.Map;
@EnableJpaAuditing
@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.rehome.adminclientappmqttserver.dao")
@EnableScheduling
public class AdminClientAppmqttserverApplication implements CommandLineRunner, ApplicationContextAware {
/**
@ -30,6 +35,16 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
*/
@Autowired
private UserController userController;
/**
*/
@Resource
private UseryfController userYfController;
/**
*/
@Resource
private UserzyController userzyController;
public static void main(String[] args) {
SpringApplication.run(AdminClientAppmqttserverApplication.class, args);
@ -49,6 +64,7 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
// System.out.println(entry.getKey());//demo1Controller
// }
try {
//珠海电厂
if (userController != null) {
System.out.println("------------------------");
System.out.println("UserController is not empty");
@ -57,6 +73,24 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
} else {
System.out.println("UserController is empty");
}
//云浮电厂
if (userYfController != null) {
System.out.println("------------------------");
System.out.println("UseryfController is not empty");
MqttRSAClientYFAPP client_yf = new MqttRSAClientYFAPP();
client_yf.start(userYfController);
} else {
System.out.println("UseryfController is empty");
}
//湛江中粤电厂
if (userzyController != null) {
System.out.println("------------------------");
System.out.println("UserzyController is not empty");
MqttRSAClientZYAPP client_zy = new MqttRSAClientZYAPP();
client_zy.start(userzyController);
} else {
System.out.println("UserzyController is empty");
}
} catch (Exception ex) {
ex.printStackTrace();
}

@ -20,7 +20,7 @@ public class MqttRSAClient {
/**
*
*/
public static final String MQTT_CLIENT_ID = "AppServer_02";
public static final String MQTT_CLIENT_ID = "AppServer_12";
/**
*
@ -89,6 +89,7 @@ public class MqttRSAClient {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("珠海电厂APP收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);

@ -0,0 +1,125 @@
package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MqttRSAClientYFAPP {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "tcp://39.101.173.20:1883";
/**
*
*/
public static final String MQTT_CLIENT_ID = "AppServer_YF_APP_server_02";
/**
*
*/
public static final String USERNAME = "admin";
/**
*
*/
public static final String PASSWORD = "public";
/**
*
*/
public static final String TOPIC_FILTER = "app_push_yf";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
private UseryfController userController;
public MqttRSAClientYFAPP(){
try {
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
// 配置参数信息
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录
// 这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(true);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(UseryfController userController) {
this.userController=userController;
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
System.out.println("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("云浮APP收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);
Gson gson = new Gson();
Useryf userInfo = gson.fromJson(messageDe, Useryf.class);
System.out.println(userInfo.getUsername());
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getNfc());
userController.saveUserYF(userInfo);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
}
@Override
public void connectComplete(boolean b, String s) {
//连接成功后调用
try {
mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码
} catch (MqttException e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,126 @@
package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.controller.UserzyController;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MqttRSAClientZYAPP {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "tcp://39.101.173.20:1883";
/**
*
*/
public static final String MQTT_CLIENT_ID = "AppServer_ZY_APP_server_02";
/**
*
*/
public static final String USERNAME = "admin";
/**
*
*/
public static final String PASSWORD = "public";
/**
*
*/
public static final String TOPIC_FILTER = "app_push_zy";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
private UserzyController userzyController;
public MqttRSAClientZYAPP(){
try {
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
// 配置参数信息
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录
// 这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(true);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(UserzyController userController) {
this.userzyController=userController;
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
System.out.println("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("湛江中粤收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);
Gson gson = new Gson();
Userzy userInfo = gson.fromJson(messageDe, Userzy.class);
System.out.println(userInfo.getUsername());
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getNfc());
userzyController.saveUserZY(userInfo);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
}
@Override
public void connectComplete(boolean b, String s) {
//连接成功后调用
try {
mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码
} catch (MqttException e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -1,29 +0,0 @@
package com.rehome.adminclientappmqttserver.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @ Author : huangwenfei
* @ Date : Created in 2021/5/16 12:11
* @ Version : $1.0.0.0
* @ Description:
*/
@Configuration
public class MybatisPlusConfig {
/**
* description:
* create by: huangwenfei
* create time: 2021/5/16 12:11
* @Param: null
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType("mysql");
return paginationInterceptor;
}
}

@ -1,176 +0,0 @@
package com.rehome.adminclientappmqttserver.config;
import com.baomidou.mybatisplus.annotation.DbType;
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.*;
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;
/**
* @ Author : huangwenfei
* @ Date : Created in 2021/5/16 1:01
* @ Version : $1.0.0.0
* @ Description: Mybatis Plus
*/
public class MysqlGenerator {
/**
*
* @author huangwenfei
* Created DateTime 2021-05-18 10:20
*/
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 + "");
}
/**
* Mybatis plus controller,service,dao,entity,mapper xml
* swagger3
* @author huangwenfei
* Created DateTime 2021-05-18 10:22
*/
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("huangwenfei");
gc.setOpen(false);
// service 命名方式
gc.setServiceName("%sService");
// // service impl 命名方式
// gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
// gc.setXmlName("%sMapper");
gc.setFileOverride(true);
gc.setActiveRecord(true);
// XML 二级缓存
gc.setEnableCache(false);
// XML ResultMap
gc.setBaseResultMap(true);
// XML columList
gc.setBaseColumnList(true);
//实体属性 Swagger2 注解
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("Skyinno251,");
dsc.setUrl("jdbc:mysql://129.211.119.207:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.rehome.adminclientappmqttserver");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("dao");
pc.setServiceImpl("service.impl");
mpg.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 如果模板引擎是 velocity
// String templatePath = "/templates/mapper.xml.vm";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<FileOutConfig>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/src/main/resources/mapper/"
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
/*
cfg.setFileCreate(new IFileCreate() {
@Override
public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
// 判断自定义文件夹是否需要创建
checkDir("调用默认方法创建的目录");
return false;
}
});
*/
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定义输出模板
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
// templateConfig.setEntity("templates/entity2.java");
// templateConfig.setService();
// templateConfig.setController();
// 生成带有Swagger注解的实体类
templateConfig.setController("templates/controller.java");
//templateConfig.setEntity("templates/controller.java.ftl");
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
strategy.setEntityLombokModel(true);
strategy.setEntityTableFieldAnnotationEnable(true);
strategy.setRestControllerStyle(true);
strategy.setEntityLombokModel(true);
// 公共父类
// strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
// 写于父类中的公共字段
// strategy.setSuperEntityColumns("id");
//strategy.setTablePrefix(new String[] { "tb_"});
strategy.setTablePrefix(pc.getModuleName() + "_");
strategy.setControllerMappingHyphenStyle(true);
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
mpg.setStrategy(strategy);
//strategy.setInclude(new String[] { "weather_realtime","weather_city","weather_type" });//表名
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}

@ -0,0 +1,28 @@
package com.rehome.adminclientappmqttserver.controller;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import com.rehome.adminclientappmqttserver.service.UseryfService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@RestController
@RequestMapping("/useryf")
public class UseryfController {
@Autowired
private UseryfService userYfService;
public void saveUserYF(Useryf user){
userYfService.saveByUsernameYF(user);
}
}

@ -0,0 +1,34 @@
package com.rehome.adminclientappmqttserver.controller;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import com.rehome.adminclientappmqttserver.service.UseryfService;
import com.rehome.adminclientappmqttserver.service.UserzyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@RestController
@RequestMapping("/useryf")
public class UserzyController {
@Autowired
private UserzyService userzyService;
public void saveUserZY(Userzy user){
userzyService.saveByUsernameZY(user);
}
}

@ -1,16 +0,0 @@
package com.rehome.adminclientappmqttserver.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rehome.adminclientappmqttserver.entity.User;
/**
* <p>
* Mapper
* </p>
*
* @author huangwenfei
* @since 2021-08-17
*/
public interface UserMapper extends BaseMapper<User> {
}

@ -0,0 +1,9 @@
package com.rehome.adminclientappmqttserver.dao;
import com.rehome.adminclientappmqttserver.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User,String> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
User findByUsername(String username);
}

@ -0,0 +1,14 @@
package com.rehome.adminclientappmqttserver.dao;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* T :
* ID :OID
*
*/
public interface UseryfRepository extends JpaRepository<Useryf,String> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
Useryf findByUsername(String username);
}

@ -0,0 +1,15 @@
package com.rehome.adminclientappmqttserver.dao;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* T :
* ID :OID
*
*/
public interface UserzyRepository extends JpaRepository<Userzy,String> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
Userzy findByUsername(String username);
}

@ -1,14 +1,13 @@
package com.rehome.adminclientappmqttserver.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Id;
/**
* <p>
@ -18,39 +17,29 @@ import lombok.experimental.Accessors;
* @author huangwenfei
* @since 2021-08-17
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="User对象", description="")
public class User extends Model<User> {
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("username")
@Id
private String username;
@TableField("password")
private String password;
@TableField("date")
private String date;
@TableField("imeinum")
@Column( length = 50)
private String imeinum;
@TableField("sysversion")
@Column( length = 100)
private String sysversion;
@TableField("phonemodel")
private String phonemodel;
@TableField("appversion")
private String appversion;
@Override
protected Serializable pkVal() {
return this.username;
}
}

@ -0,0 +1,32 @@
package com.rehome.adminclientappmqttserver.entity;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
/**
* @author huangwenfei
* @since 2022-03-09
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class Useryf implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String nfc;
@Column( length = 32)
private String date;
}

@ -0,0 +1,32 @@
package com.rehome.adminclientappmqttserver.entity;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
/**
* @author huangwenfei
* @since 2023-08-29
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class Userzy implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String nfc;
@Column( length = 32)
private String date;
}

@ -1,7 +1,7 @@
package com.rehome.adminclientappmqttserver.service;
import com.rehome.adminclientappmqttserver.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @author huangwenfei
* @since 2021-08-17
*/
public interface UserService extends IService<User> {
public interface UserService {
public void saveByUsername(User user);

@ -0,0 +1,15 @@
package com.rehome.adminclientappmqttserver.service;
import com.rehome.adminclientappmqttserver.entity.Useryf;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
public interface UseryfService {
public void saveByUsernameYF(Useryf user);
}

@ -0,0 +1,16 @@
package com.rehome.adminclientappmqttserver.service;
import com.rehome.adminclientappmqttserver.entity.Userzy;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
public interface UserzyService {
public void saveByUsernameZY(Userzy user);
}

@ -1,12 +1,12 @@
package com.rehome.adminclientappmqttserver.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rehome.adminclientappmqttserver.dao.UserRepository;
import com.rehome.adminclientappmqttserver.entity.User;
import com.rehome.adminclientappmqttserver.dao.UserMapper;
import com.rehome.adminclientappmqttserver.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* <p>
@ -17,17 +17,14 @@ import org.springframework.stereotype.Service;
* @since 2021-08-17
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Transactional
public class UserServiceImpl implements UserService {
@Resource
private UserRepository userRepository;
@Override
public void saveByUsername(User user) {
Wrapper<User> wrapper = new QueryWrapper<User>().lambda().eq(User::getUsername, user.getUsername());
User userDB = this.getOne(wrapper);
if(userDB!=null){
this.update(user,wrapper);
}else {
//数据库不存在这条数据,保存到数据库
this.save(user);
}
this.userRepository.save(user);
}
}

@ -0,0 +1,38 @@
package com.rehome.adminclientappmqttserver.service.impl;
import com.rehome.adminclientappmqttserver.dao.UseryfRepository;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import com.rehome.adminclientappmqttserver.service.UseryfService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@Service
@Transactional
public class UseryfServiceImpl implements UseryfService {
@Resource
private UseryfRepository useryfRepository;
@Override
public void saveByUsernameYF(Useryf user) {
// Useryf useryfDb = this.useryRepository.findByUsername(user.getUsername());
// if (useryfDb != null) {
// useryfDb.setDate(user.getDate());
// useryfDb.setPassword(user.getPassword());
// useryfDb.setNfc(user.getNfc());
// this.useryRepository.save(useryfDb);
// } else {
// this.useryRepository.save(user);
// }
this.useryfRepository.save(user);
}
}

@ -0,0 +1,40 @@
package com.rehome.adminclientappmqttserver.service.impl;
import com.rehome.adminclientappmqttserver.dao.UserzyRepository;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import com.rehome.adminclientappmqttserver.service.UserzyService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@Service
@Transactional
public class UserzyServiceImpl implements UserzyService {
@Resource
private UserzyRepository userzyRepository;
@Override
public void saveByUsernameZY(Userzy user) {
// Useryf useryfDb = this.useryRepository.findByUsername(user.getUsername());
// if (useryfDb != null) {
// useryfDb.setDate(user.getDate());
// useryfDb.setPassword(user.getPassword());
// useryfDb.setNfc(user.getNfc());
// this.useryRepository.save(useryfDb);
// } else {
// this.useryRepository.save(user);
// }
this.userzyRepository.save(user);
}
}

@ -39,78 +39,20 @@ spring:
password: ${spring.security.user.password}
username: user
password: 123456
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
dynamic:
#设置默认的数据源或者数据源组,默认值即为master
primary: master
strict: false
datasource:
master:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.jdbc.Driver # 8.0 com.mysql.cj.jdbc.Driver
#url: jdbc:mysql://127.0.0.1:3306/storm?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false
#url: jdbc:mysql://192.168.2.18:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://129.211.119.207:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
username: root
password: Skyinno251,
slave:
driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.jdbc.Driver # 8.0 com.mysql.cj.jdbc.Driver
#url: jdbc:mysql://124.156.183.8:3306/storm?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.2.18:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
username: root
password: Skyinno251,
# 数据源配置
druid:
# druid连接池监控
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: admin
login-password: admin
# 初始化时建立物理连接的个数
initial-size: 5
# 最大连接池数量
max-active: 30
# 最小连接池数量
min-idle: 5
# 获取连接时最大等待时间,单位毫秒
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 连接保持空闲而不被驱逐的最小时间
min-evictable-idle-time-millis: 300000
# 用来检测连接是否有效的sql要求是一个查询语句
validation-query: select count(*) from dual
# 建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。
test-while-idle: true
# 申请连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。
test-on-borrow: false
# 归还连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。
test-on-return: false
# 是否缓存preparedStatement也就是PSCache。PSCache对支持游标的数据库性能提升巨大比如说oracle。在mysql下建议关闭。
pool-prepared-statements: false
# 要启用PSCache必须配置大于0当大于0时poolPreparedStatements自动触发修改为true。
max-pool-prepared-statement-per-connection-size: 50
# 配置监控统计拦截的filters去掉后监控界面sql无法统计
filters: stat,wall
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
connection-properties:
druid.stat.mergeSql: true
druid.stat.slowSqlMillis: 500
# 合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
jpa:
database: mysql # 配置 DBMS 类型
show-sql: true # 配置是否将执行的 SQL 输出到日志
open-in-view: true
hibernate:
ddl-auto: update # 第一次建表create 后面用update要不然每次重启都会新建表
servlet:
multipart:
# 开启 multipart 上传功能
@ -121,20 +63,6 @@ spring:
max-file-size: 200MB
# 最大请求大小
max-request-size: 215MB
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
auto-mapping-behavior: full
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:mapper/**/*Mapper.xml
global-config:
# 逻辑删除配置
db-config:
# 删除前
logic-not-delete-value: 1
# 删除后
logic-delete-value: 0
logging:
level:
root: info

@ -1,21 +0,0 @@
<?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.rehome.adminclientappmqttserver.dao.UserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.rehome.adminclientappmqttserver.entity.User">
<id column="username" property="username" />
<result column="password" property="password" />
<result column="date" property="date" />
<result column="imeinum" property="imeinum" />
<result column="sysversion" property="sysversion" />
<result column="phonemodel" property="phonemodel" />
<result column="appversion" property="appversion" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
username, password, date, imeinum, sysversion, phonemodel
</sql>
</mapper>
Loading…
Cancel
Save