Java笔记1
-
- MD5 加密 机密
- mybatis
- 加载配置文件
- pom文件
- httpclent 使用
- ftp
- JDK版本问题解决 version52.0
- 合理的创建标题,有助于目录的生成
- JAVA 解析xml字符串
- 使用dom4j生成复制字符串
- xml字符串转换成json字符串
- 复制图片
- 复制整个目录带图片
- sql笔记
- 数据库数据导出到 excel中
- springboot日志配置
- 插入链接与图片
- xml 转成json 数据
- json数据
- 通过模板生成pdf (accrbot)
- 生成一个适合你的列表
- 创建一个表格
- 创建一个自定义列表
- 如何创建一个注脚
- 注释也是必不可少的
- KaTeX数学公式
- 新的甘特图功能,丰富你的文章
- UML 图表
- FLowchart流程图
- 导出与导入
#MD5 -加密 解密
MD5 加密 机密
- 方法一 加密
public static void toMD5(String plainText) {
try {
//生成实现指定摘要算法的 MessageDigest 对象。
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字节数组更新摘要。
md.update(plainText.getBytes());
//通过执行诸如填充之类的最终操作完成哈希计算。
byte b[] = md.digest();
//生成具体的md5密码到buf数组
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
System.out.println("32位: " + buf.toString());// 32位的加密
System.out.println("16位: " + buf.toString().substring(8, 24));// 16位的加密,其实就是32位加密后的截取
}
catch (Exception e) {
e.printStackTrace();
}
}
- 方法二 加密 和 解密
/***
* MD5加码 生成32位md5码
*/
public static String string2MD5(String inStr){
MessageDigest md5 = null;
try{
md5 = MessageDigest.getInstance("MD5");
}catch (Exception e){
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++){
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
2.1 方法二 解密
/**
* 加密解密算法 执行一次加密,两次解密
*/
public static String convertMD5(String inStr){
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++){
a[i] = (char) (a[i] ^ 't');
}
String s = new String(a);
return s;
}
public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
// TODO Auto-generated method stub
String s2 = EncoderByMd5("INSPUR-DZZW-BDC3100852bdctybh");
String s1 = "INSPUR-DZZW-BDC3100852bdctybh";
System.out.println(s1);
toMD5("INSPUR-DZZW-BDC"+"3100852"+"bdctybh");
String s = new String("tangfuqiang");
System.out.println("原始:" + s1);
System.out.println("MD5后:" + string2MD5(s1));
System.out.println("加密的:" + convertMD5(s1));
System.out.println("解密的:" + convertMD5(convertMD5(s1)));
}
INSPUR-DZZW-BDC3100852bdctybh
32位: 0c65507be003309a2549f04fc402cb86
16位: e003309a2549f04f
原始:INSPUR-DZZW-BDC3100852bdctybh
MD5后:0c65507be003309a2549f04fc402cb86
加密的:=:'$!&Y0..#Y607GEDDLAF
mybatis
mybatis 基本配置
- 1.单数据源
mybatis.type-aliases-package=com.sum.dao
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.jdbc-type-for-null=null
mybatis.configuration.call-setters-on-nulls=true
- 2.多数据源
# master 数据源配置
master.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useUnicode=true&characterEncoding=utf8
master.datasource.username=root
master.datasource.password=321
master.datasource.driverClassName=com.mysql.jdbc.Driver
# second 数据源配置
second.datasource.url=jdbc:mysql://localhost:3306/springbootdb_second?useUnicode=true&characterEncoding=utf8
second.datasource.username=root
second.datasource.password=321
second.datasource.driverClassName=com.mysql.jdbc.Driver
多数据源配置的时候注意,必须要有一个主数据源,即 MasterDataSourceConfig 配置
@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MasterDataSourceConfig {
// 精确到 master 目录,以便跟其他数据源隔离
static final String PACKAGE = "org.spring.springboot.dao.master";
static final String MAPPER_LOCATION = "classpath:mapper/master/*.xml";
@Value("${master.datasource.url}")
private String url;
@Value("${master.datasource.username}")
private String user;
@Value("${master.datasource.password}")
private String password;
@Value("${master.datasource.driverClassName}")
private String driverClass;
@Bean(name = "masterDataSource")
@Primary
public DataSource masterDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "masterTransactionManager")
@Primary
public DataSourceTransactionManager masterTransactionManager() {
return new DataSourceTransactionManager(masterDataSource());
}
@Bean(name = "masterSqlSessionFactory")
@Primary
public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(masterDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(MasterDataSourceConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
第二个数据源SecondDataSourceConfig的配置如下:
@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = SecondDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "secondSqlSessionFactory")
public class SecondDataSourceConfig {
// 精确到 cluster 目录,以便跟其他数据源隔离
static final String PACKAGE = "com.springboot.dao.second";
static final String MAPPER_LOCATION = "classpath:mapper/second/*.xml";
@Value("${second.datasource.url}")
private String url;
@Value("${second.datasource.username}")
private String user;
@Value("${second.datasource.password}")
private String password;
@Value("${second.datasource.driverClassName}")
private String driverClass;
@Bean(name = "secondDataSource")
public DataSource clusterDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "secondTransactionManager")
public DataSourceTransactionManager clusterTransactionManager() {
return new DataSourceTransactionManager(clusterDataSource());
}
@Bean(name = "secondSqlSessionFactory")
public SqlSessionFactory clusterSqlSessionFactory(@Qualifier("secondDataSource") DataSource clusterDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(clusterDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(SecondDataSourceConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
- 将mapper 放在配置对应的 位置下
详细配置看这里
mybatis 语句
<!-- 数据集合-->
<resultMap type="com.entry.xm" id="xmMap">
<result property="xmid" column="xmid" jdbcType="VARCHAR"/>
<result property="xmmc" column="xmmc" jdbcType="VARCHAR"/>
</resultMap>
<select id="tsxm" resultMap="xmMap">
<![CDATA[
select
xmid, xmmc
from bdc_xm
]]>
</select>
<!-- list集合的-->
<update id="update">
update bdc_xm set xmzs=1
where xmid=
<foreach collection="list" index="index" item="item" separator="union all" open="(" close=")">
SELECT
#{
item.xmid,jdbcType=VARCHAR}
FROM dual
</foreach>
</update>
<!-- 实体类的-->
<update id="xmupdate">
update bdc_xm set xmzs=1
where xmid=#{
xmid}
</update>
<!-- 数据类型 -->
<resultMap type="com.enery.xm" id="xmMap">
<result property="xmid" column="xmid" jdbcType="VARCHAR"/>
<result property="xmmc" column="xmmc" jdbcType="VARCHAR"/>
</resultMap>
<select id="tsxm" resultMap="xmMap">
<![CDATA[
select
xmid, xmmc
from bdc_xm
where fcbs=0 and rownum <=10
]]>
</select>
<update id="update">
update bdc_xm set FCBS=1;
where xmid = #{
xmid}
</update>
<!-- list 集合的 (实体放在list中list<xm>)-->
<insert id="JYXT_insertXM" parameterType="com.entry.xm" useGeneratedKeys="false">
insert into bdc_xm(xmid,xmmc)
<foreach collection="list" index="index" item="item" separator="union all" open="(" close=")">
SELECT
#{
item.xmid,jdbcType=VARCHAR},
#{
item.xmmc,jdbcType=VARCHAR}
FROM dual
</foreach>
</insert>
<!-- 实体类的 -->
<insert id="JYXT_bdcxminsertXM" parameterType="com.entry.xm" useGeneratedKeys="false">
MERGE INTO bdc_xm T
USING (
SELECT
#{
xmid} as T_XMID,
#{
xmmc} as T_XMMC
FROM DUAL
)T1
ON (T.XMID = T1.T_XMID)
WHEN MATCHED THEN
UPDATE SET
T.XMMC =T1.T_XMMC
WHEN NOT MATCHED THEN
INSERT
(XMID,XMMC)
VALUES (T1.T_XMID,T1.T_XMMC)
</insert>
多数据源配置
- application.yml
server:
port: 9999
servlet:
context-path: /XYZZSH
spring:
mvc:
static-path-pattern: /**
pathmatch:
use-suffix-pattern: true
druid:
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 'x' FROM DUAL
testWhileIdle: true
testOnBorrow: true
testOnReturn: true
poolPreparedStatements: true
maxOpenPreparedStatements: 20
logSlowSql: true
ywk:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
username: sjk
password: sjk
driver-class-name: oracle.jdbc.OracleDriver
qzj:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
username: sjk
password: sjk
driver-class-name: oracle.jdbc.OracleDriver
logging:
level:
com.dao: DEBUG
config: classpath:logback.xml
- 主数据源配置
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
@Configuration
@MapperScan(basePackages = YWKDruidConfig.PACKAGE, sqlSessionFactoryRef = "ywkSqlSessionFactory")
public class YWKDruidConfig {
static final String PACKAGE = "com.dao.ywk";
static final String MAPPER_LOCATION = "classpath:mapper/ywk/*.xml";
@Value("${spring.ywk.url}")
private String ywk_dbUrl;
@Value("${spring.ywk.username}")
private String ywk_username;
@Value("${spring.ywk.password}")
private String ywk_password;
@Value("${spring.ywk.driver-class-name}")
private String ywk_driverClassName;
@Value("${spring.druid.initialSize}")
private int initialSize;
@Value("${spring.druid.minIdle}")
private int minIdle;
@Value("${spring.druid.maxActive}")
private int maxActive;
@Value("${spring.druid.maxWait}")
private int maxWait;
@Value("${spring.druid.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;
@Value("${spring.druid.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;
@Value("${spring.druid.validationQuery}")
private String validationQuery;
@Value("${spring.druid.testWhileIdle}")
private boolean testWhileIdle;
@Value("${spring.druid.testOnBorrow}")
private boolean testOnBorrow;
@Value("${spring.druid.testOnReturn}")
private boolean testOnReturn;
@Value("${spring.druid.filters}")
private String filters;
@Value("${spring.druid.logSlowSql}")
private String logSlowSql;
@Bean
public ServletRegistrationBean druidServlet() throws ServletException {
ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new StatViewServlet());
reg.addUrlMappings("/druid/*");
reg.addInitParameter("loginUsername", "admin");
reg.addInitParameter("loginPassword", "123");
reg.addInitParameter("logSlowSql", logSlowSql);
return reg;
}
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.addInitParameter("profileEnable", "true");
return filterRegistrationBean;
}
@Bean(name="ywkDataSource")
public DataSource ywkDataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setName("ywk");
datasource.setUrl(ywk_dbUrl);
datasource.setUsername(ywk_username);
datasource.setPassword(ywk_password);
datasource.setDriverClassName(ywk_driverClassName);
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
e.printStackTrace();
}
return datasource;
}
@Bean(name = "ywkTransactionManager")
public DataSourceTransactionManager ywkTransactionManager() {
return new DataSourceTransactionManager(ywkDataSource());
}
@Bean(name = "ywkSqlSessionFactory")
public SqlSessionFactory ywkSqlSessionFactory(@Qualifier("ywkDataSource") DataSource ywkDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(ywkDataSource);
sessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(YWKDruidConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
- 副数据源配置
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
import java.sql.SQLException;
@Configuration
@MapperScan(basePackages = QZJDruidConfig.PACKAGE, sqlSessionFactoryRef = "qzjSqlSessionFactory")
public class QZJDruidConfig {
static final String PACKAGE = &