Commit 0bf1e1ad by Guojunfeng

迁移登录接口

parent 576788f0
......@@ -9,4 +9,16 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>common_utils</artifactId>
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.6</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.founder.commonutils.Exception;
/**
* 描述:
* <p>
*
* @author: changchao
* @date: 2018/4/11 23:06
*/
public class BaseException extends RuntimeException {
public BaseException(String message) {
super(message);
}
public BaseException(String message, Throwable cause) {
super(message, cause);
}
}
package com.founder.commonutils.Exception;
/**
* 描述:
* <p>
*
* @author: changchao
* @date: 2018/4/11 10:24
*/
public class TokenException extends BaseException {
private static final long serialVersionUID = 1L;
public TokenException(String message) {
super(message);
}
}
package com.founder.commonutils.publicEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel
@TableName("SYS_USERS")
public class SysUsers {
private String xxzjbh;
private String policemanid;
private String truename;
private String telephone;
private String identitycard;
private String unitcode;
private String unitname;
private String username;
private String password;
private String jurisdiction;
private Date gxsj;
private String xxlyms;
private String jobname;
private String lrr;
private String lrdwdm;
private String lrdwmc;
private String gxr;
private String gxdwdm;
private String gxdwmc;
private String role_id;
private List<String> permission_id;//登录返回用户所有权限集合
}
package com.founder.commonutils.util;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
* AES 128bit 加密解密工具类
*
* @author dufy
*/
public class AesEncryptUtil {
//使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
private static String KEY = "maplogin20200416";
private static String IV = "map_vues20200416";
/**
* 加密方法
* @param data 要加密的数据
* @param key 加密key
* @param iv 加密iv
* @return 加密的结果
* @throws Exception
*/
public static String encrypt(String data, String key, String iv) throws Exception {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"NoPadding PkcsPadding
int blockSize = cipher.getBlockSize();
byte[] dataBytes = data.getBytes();
int plaintextLength = dataBytes.length;
if (plaintextLength % blockSize != 0) {
plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
}
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
byte[] encrypted = cipher.doFinal(plaintext);
return new Base64().encodeToString(encrypted);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 解密方法
* @param data 要解密的数据
* @param key 解密key
* @param iv 解密iv
* @return 解密的结果
* @throws Exception
*/
public static String desEncrypt(String data, String key, String iv) throws Exception {
try {
byte[] encrypted1 = new Base64().decode(data);
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original);
return originalString;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 使用默认的key和iv加密
* @param data
* @return
* @throws Exception
*/
public static String encrypt(String data) throws Exception {
return encrypt(data, KEY, IV);
}
/**
* 使用默认的key和iv解密
* @param data
* @return
* @throws Exception
*/
public static String desEncrypt(String data) throws Exception {
return desEncrypt(data, KEY, IV);
}
/**
* 测试
*/
public static void main(String args[]) throws Exception {
String test1 = "1111111111000000";
String test =new String(test1.getBytes(),"UTF-8");
String data = null;
String key = KEY;
String iv = IV;
// /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
data = encrypt(test, key, iv);
System.out.println("数据:"+test);
System.out.println("加密:"+data);
String jiemi =desEncrypt(data, key, iv).trim();
System.out.println("解密:"+jiemi);
}
}
\ No newline at end of file
package com.founder.commonutils.util;
import sun.misc.BASE64Decoder;
import java.io.UnsupportedEncodingException;
/**
* Base64加密,解密
*/
public class Base64Util {
/**
* 将 s 进行 BASE64 编码
*
* @return String
* @author lifq
* @date 2015-3-4 上午09:24:02
*/
public static String encode(String s) {
if (s == null)
return null;
String res = "";
try {
res = new sun.misc.BASE64Encoder().encode(s.getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
/**
* 将 BASE64 编码的字符串 s 进行解码
*
* @return String
* @author lifq
* @date 2015-3-4 上午09:24:26
*/
public static String decode(String s) {
if (s == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b,"utf-8");
} catch (Exception e) {
return null;
}
}
public static void main(String[] args) {
System.out.println(Base64Util.encode("0"));
System.out.println(Base64Util.decode("MA=="));
}
}
\ No newline at end of file
package com.founder.commonutils.util;
import com.alibaba.fastjson.JSONObject;
import com.founder.commonutils.Exception.TokenException;
import com.founder.commonutils.publicEntity.SysUsers;
import io.jsonwebtoken.*;
import org.apache.tomcat.util.http.MimeHeaders;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
import javax.xml.bind.DatatypeConverter;
import java.lang.reflect.Field;
import java.security.Key;
import java.security.SignatureException;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* @FileName: JwtUser
* @Author: changchao
* @Date: 2019/11/06 19:39
* @Description: 实现Jwt
* JWT由三部分组成,它们之间用圆点(.)连接。这三部分分别是:Header/Payload/Signature
*/
public class JwtUser {
// @Value("${jwt.secret}")
public String base64Security="bWFwLXBsYXRmb3JtLWRvbmdndWFuLTIwMTktMTEtNg==";
final static long ttlMillis = 1000 * 60 * 60;//过期时间,30分钟
private static final Logger logger = LoggerFactory.getLogger(JwtUser.class);
/**
* 创建jwt
* @param sysuser 用户信息
* @return
* @throws Exception
*/
public String createJWT(String sysuser) throws Exception {
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; //指定签名的时候使用的签名算法,也就是header那部分,jjwt已经将这部分内容封装好了。
long nowMillis = System.currentTimeMillis();//生成JWT的时间
Date now = new Date(nowMillis);
Map<String,Object> claims = new HashMap<String,Object>();//创建payload的私有声明(根据特定的业务需要添加,如果要拿这个做验证,一般是需要和jwt的接收方提前沟通好验证方式的)
claims.put("uid", "DSSFAWDWADAS...");
claims.put("user_name", "admin");
claims.put("nick_name","DASDA121");
// 生成签名密钥
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security);
//生成签名的时候使用的秘钥secret,这个方法本地封装了的,一般可以从本地配置文件中读取,
// 切记这个秘钥不能外露哦。它就是你服务端的私钥,在任何场景都不应该流露出去。
// 一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。
Key SecretKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
//下面就是在为payload添加各种标准声明和私有声明了
JwtBuilder builder = Jwts.builder() //这里其实就是new一个JwtBuilder,设置jwt的body
.setClaims(claims) //如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的
// .setId(id) //设置jti(JWT ID):是JWT的唯一标识,根据业务需要,这个可以设置为一个不重复的值,主要用来作为一次性token,从而回避重放攻击。
.setIssuedAt(now) //iat: jwt的签发时间
.setSubject(sysuser) //sub(Subject):代表这个JWT的主体,即它的所有人,这个是一个json格式的字符串,可以存放什么userid,roldid之类的,作为什么用户的唯一标志。
.signWith(signatureAlgorithm, SecretKey);//设置签名使用的签名算法和签名使用的秘钥
if (ttlMillis >= 0) {
long expMillis = nowMillis + ttlMillis;
Date exp = new Date(expMillis);
builder.setExpiration(exp); //设置过期时间
}
return builder.compact(); //就开始压缩为xxxxxxxxxxxxxx.xxxxxxxxxxxxxxx.xxxxxxxxxxxxx这样的jwt
//打印
//eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJEU1NGQVdEV0FEQVMuLi4iLCJzdWIiOiIiLCJ1c2VyX25hbWUiOiJhZG1pbiIsIm5pY2tfbmFtZSI6IkRBU0RBMTIxIiwiZXhwIjoxNTE3ODI4MDE4LCJpYXQiOjE1MTc4Mjc5NTgsImp0aSI6Imp3dCJ9.xjIvBbdPbEMBMurmwW6IzBkS3MPwicbqQa2Y5hjHSyo
}
/**
* 解密jwt
* @param jwt
* @return
* @throws Exception
*/
public Claims parseJWT(String jwt){
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
// 生成签名密钥
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security);
Key SecretKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());//签名秘钥,和生成的签名的秘钥一模一样
try {
Claims claims = Jwts.parser() //得到DefaultJwtParser
.setSigningKey(SecretKey) //设置签名的秘钥
.parseClaimsJws(jwt).getBody();//设置需要解析的jwt
return claims;
} catch (ExpiredJwtException e) {
logger.error("Token已过期: {} " + e);
throw new TokenException("Token已过期");
} catch (UnsupportedJwtException e) {
logger.error("Token格式错误: {} " + e);
throw new TokenException("Token格式错误");
} catch (MalformedJwtException e) {
logger.error("Token没有被正确构造: {} " + e);
throw new TokenException("Token没有被正确构造");
} catch (IllegalArgumentException e) {
logger.error("非法参数异常: {} " + e);
throw new TokenException("非法参数异常");
}
}
/**
* 解密jwt
* @param request
* @return
* @throws Exception
*/
public static SysUsers getUser(HttpServletRequest request){
//通过拦截器后获取sysuser
SysUsers user= new SysUsers();
//登录失效
if(request.getAttribute("sysuser").toString().equals("error")){
user.setUsername("error");
}else{
user = JSONObject.parseObject( request.getAttribute("sysuser").toString(), SysUsers.class);
}
//System.out.println(user.getUsername());
return user;
}
public static String getHeadToken(ServletRequestAttributes attributes, String key) {
/**
*
* 功能描述: 得到头部保存的信息,通过key得到value
*
* @param: [attributes, key] attribute 固定(ServletRequestAttributes) RequestContextHolder.getRequestAttributes() key:为头部保存信息的键子key
* @return: java.lang.String
*/
HttpServletRequest request = attributes.getRequest();
Map<String, String> map = new HashMap<String, String>();
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key1 = (String) headerNames.nextElement();
String value = request.getHeader(key1);
map.put(key1, value);
}
return map.get(key);
}
//把自己想要的信息设置到header头部,就相当于是在request的请求头部添加一个键值对,保存自己的数据
public static void reflectSetHeader(HttpServletRequest request, String key, String value){
Class<? extends HttpServletRequest> requestClass = request.getClass();
try {
Field request1 = requestClass.getDeclaredField("request");
request1.setAccessible(true);
Object o = request1.get(request);
Field coyoteRequest = o.getClass().getDeclaredField("coyoteRequest");
coyoteRequest.setAccessible(true);
Object o1 = coyoteRequest.get(o);
Field headers = o1.getClass().getDeclaredField("headers");
headers.setAccessible(true);
MimeHeaders o2 = (MimeHeaders)headers.get(o1);
o2.removeHeader(key);
o2.addValue(key).setString(value);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
JwtUser util= new JwtUser();
String ab=util.createJWT("222");
//System.out.println(ab);
//eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJEU1NGQVdEV0FEQVMuLi4iLCJzdWIiOiJ7aWQ6MTAwLG5hbWU6eGlhb2hvbmd9IiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiJEQVNEQTEyMSIsImV4cCI6MTUxNzgzNTE0NiwiaWF0IjoxNTE3ODM1MDg2LCJqdGkiOiJqd3QifQ.ncVrqdXeiCfrB9v6BulDRWUDDdROB7f-_Hg5N0po980
String jwt="eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJEU1NGQVdEV0FEQVMuLi4iLCJzdWIiOiJ7aXA6MTkyLjE2OC4xLjEsbmFtZTrlpKfmlbDmja7kuK3lv4N9IiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiJEQVNEQTEyMSIsImV4cCI6MTU3MzA0MDI4MywiaWF0IjoxNTczMDQwMjIzLCJqdGkiOiJqd3QifQ.hPPG6RxGDmnQTjNjY61iFEE-JGoBhtJFDqyEtaJayyA";
Claims c=util.parseJWT(jwt);//注意:如果jwt已经过期了,这里会抛出jwt过期异常。
System.out.println(c.getId());//jwt
System.out.println(c.getIssuedAt());//Mon Feb 05 20:50:49 CST 2018
System.out.println(c.getSubject());//{id:100,name:xiaohong}
System.out.println(c.getIssuer());//null
System.out.println(c.get("uid", String.class));//DSSFAWDWADAS...*/
}
}
package com.founder.publicapi.config;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.founder.publicapi.mapper")
public class EduConfig {
/**
* 逻辑删除插件
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
package com.founder.publicapi.controller;
import com.alibaba.fastjson.JSONObject;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.SysUsers;
import com.founder.commonutils.util.Base64Util;
import com.founder.commonutils.util.JwtUser;
import com.founder.publicapi.service.SysUsersService;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import static com.founder.commonutils.util.AesEncryptUtil.desEncrypt;
@Api(description = "全国人员常口接口")
@RestController
@RequestMapping(value = "/users")
public class SysUsersController {
@Autowired
private SysUsersService sysUsersService;
//-----------新版jwt login登录
@ApiOperation(value = "登录")
// @OperLog(message = "登录",operation = OperationType.LOGIN)
@PostMapping("/login")
public MapRestResult login(@RequestBody SysUsers sysUsers, HttpServletRequest request, HttpServletResponse response) throws Exception {
//使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
String KEY = "maplogin20200416";
String IV = "map_vues20200416";
String Password = "";
String Username = "";
if (!sysUsers.getPassword().equals("") || !sysUsers.getUsername().equals("")) {
Password = desEncrypt(sysUsers.getPassword(), KEY, IV).trim();
Username = desEncrypt(sysUsers.getUsername(), KEY, IV).trim();
//获取到密码之后,base64 加密去库里进行查询,
sysUsers.setPassword(Base64Util.encode(Password));
sysUsers.setUsername(Username);
MapRestResult mapRestResult = sysUsersService.getUsersByNamePassword(sysUsers, request);
if (mapRestResult.getStatus().equals(200) && mapRestResult.getData() != null) {
List<SysUsers> sysUsersList = (List<SysUsers>) mapRestResult.getData();
if (sysUsersList.size() > 0) {
JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(sysUsersList.get(0));
JwtUser util = new JwtUser();
//用户JWT生成token
String token = util.createJWT(jsonObject1.toString());
// return MapRestResult.build(200,"登陆成功",token);
mapRestResult.setMsg(token);
return mapRestResult;
} else {
mapRestResult.setMsg("用户不存在");
return mapRestResult;
}
}
} else {
return MapRestResult.build(500,"传入参数为空",null);
}
return MapRestResult.build(500,"登录失败",null);
}
}
package com.founder.publicapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.publicEntity.SysUsers;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 用户登录 Mapper 接口
* </p>
*
* @author Guojunfeng
* @since 2021-03-11
*/
@Mapper
public interface SysUsersMapper extends BaseMapper<SysUsers> {
List<SysUsers> getUsersByNamePassword(@Param("username") String username, @Param("password") String password);
}
<?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.founder.publicapi.mapper.SysUsersMapper">
<select id="getUsersByNamePassword" resultType="com.founder.commonutils.publicEntity.SysUsers">
select * from sys_user
where 1=1
<if test="username!=null and username!=''">
and username = #{username}
</if>
<if test="password!=null and password!=''">
and password = #{password}
</if>
</select>
</mapper>
package com.founder.publicapi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.SysUsers;
import javax.servlet.http.HttpServletRequest;
public interface SysUsersService extends IService<SysUsers> {
public MapRestResult getUsersByNamePassword(SysUsers sysUsers, HttpServletRequest request);
}
package com.founder.publicapi.service.serviceimpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.SysUsers;
import com.founder.publicapi.mapper.SysUsersMapper;
import com.founder.publicapi.service.SysUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Service
public class SysUsersServiceImpl extends ServiceImpl<SysUsersMapper, SysUsers> implements SysUsersService {
@Autowired
private SysUsersMapper sysUsersMapper;
@Override
public MapRestResult getUsersByNamePassword(SysUsers sysUsers, HttpServletRequest request) {
List<SysUsers> list = sysUsersMapper.getUsersByNamePassword(sysUsers.getUsername(),sysUsers.getPassword());
//获取当前用户的多个角色,然后获取这些角色的权限,合并这些权限去重复返回。begin
//1.根据username获取角色
/* SysUsersRoles sysUsersRoles=new SysUsersRoles();
sysUsersRoles.setUser_id(sysUsers.getUsername());
List<SysUsersRoles> sysUsersRolesList=sysUsersRolesRepository.selectUserRoleList(sysUsersRoles);
String roleIdStrs="";
List<String> permissionList=new ArrayList<>();
for(int i=0;i<sysUsersRolesList.size();i++){
SysUsersRoles sysUsersRoles1=sysUsersRolesList.get(i);
//2.根据角色获取权限,
String[] roleIds=sysUsersRoles1.getRole_id().split(",");
for(int j=0;j<roleIds.length;j++){
SysRolesPermissions sysRolesPermissions=new SysRolesPermissions();
sysRolesPermissions.setRole_id(roleIds[j]);
List<SysRolesPermissions> sysRolesPermissionsList=sysRolesPermissionsRepository.selectRolePermissionList(sysRolesPermissions);
for(int k=0;k<sysRolesPermissionsList.size();k++){
SysRolesPermissions sysRolesPermissions1=sysRolesPermissionsList.get(k);
if("".equals(roleIdStrs)){
roleIdStrs=sysRolesPermissions1.getPermission_id();
}else{
roleIdStrs=roleIdStrs+","+sysRolesPermissions1.getPermission_id();
}
}
}
}
List<String> split= Arrays.asList(roleIdStrs.split(","));//逗号分隔的字符串转list
List lists = split.stream().distinct().collect(Collectors.toList());//list去重复
Iterator<SysUsers> resultIterator = list.iterator();
while (resultIterator.hasNext()){//循环修改newlist里的值
SysUsers obj = resultIterator.next();
obj.setPermission_id(lists);
}*/
//获取当前用户的多个角色,然后获取这些角色的权限,合并这些权限去重复返回。end
return MapRestResult.build(200,"根据用户名密码查询用户信息",list);
}
}
# oracleݿ
# oracle\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
#spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@68.174.69.94:1521:XZXT
#spring.datasource.username=MAPZY
#spring.datasource.password=MapZy#44
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@68.174.69.94:1521:XZXT
spring.datasource.username=MAPZY
spring.datasource.password=MapZy#44
\ No newline at end of file
spring.datasource.url=jdbc:oracle:thin:@47.92.129.99:1600:orcl
spring.datasource.username=XZXT
spring.datasource.password=XZXT
\ No newline at end of file
# oracleݿ
# oracle\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@10.100.17.120:1521:XZXT
spring.datasource.username=XZXT
......
# 服务端口
# \uFFFD\uFFFD\uFFFD\uFFFD\u02FF\uFFFD
server.port=8001
# 服务名
spring.application.name=asj
# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.application.name=publicapi
# 环境设置:dev、test、prod
spring.profiles.active=dev
# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00E3\uFFFDdev\uFFFD\uFFFDtest\uFFFD\uFFFDprod
spring.profiles.active=prod
#返回json的全局时间格式
#\uFFFD\uFFFD\uFFFD\uFFFDjson\uFFFD\uFFFD\u022B\uFFFD\uFFFD\u02B1\uFFFD\uFFFD\uFFFD\u02BD
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#配置mapper xml文件的路径
mybatis-plus.mapper-locations=classpath:mybatis/mapper/oracle/*.xml
#\uFFFD\uFFFD\uFFFD\uFFFDmapper xml\uFFFD\u013C\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD
mybatis-plus.mapper-locations=classpath:com/founder/publicapi/mapper/xml/*.xml
# 设置日志级别
# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05BE\uFFFD\uFFFD\uFFFD\uFFFD
logging.level.root=INFO
#mybatis日志
#mybatis\uFFFD\uFFFD\u05BE
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment