1.项目结构搭建
2.相关依赖
<!--测试支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--加密支持-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!--数据库支持-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
3.application.properties
#jasypt加密的密匙(必须配置)
#jasypt.encryptor.password=EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
jasypt.encryptor.password=wxd
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dongge?serverTimezone=UTC
#spring.datasource.username=root
#spring.datasource.password=kgc
#使用ENC()解密
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=ENC(2br1CumzOtWl+tluAaN7pvWtVsEGtIkEDR9l59aPy+Z+0+xUQPHYjvnL2iYJTz9CSL0G5gQZgyvoQlxNhUjqC9yYgCLoMkTRkEhj2U6jf2TmprYUle0bF/akwwoxmTI1hvp3pHbiB/Q=)
spring.datasource.username=ENC(0aQ/N82hAhpqw3lqKJIPIg==)
spring.datasource.password=ENC(mM+zVO45giLycgS16SmrvQ==)
4.代码实现
DbController
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 测试数据库连接
*/
@RestController
public class DbController {
@Autowired
private JdbcTemplate jdbcTemplate;//jdbc的封装
@RequestMapping("/test")
public List<Map<String, Object>> getDbType(){
String sql = "select * from student";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
System.out.println("[map]"+jdbcTemplate.queryForList(sql));
System.out.println("[list]"+list);
for (Map<String, Object> map : list) {
//获得键值对集合
Set<Map.Entry<String, Object>> entries = map.entrySet();
if(entries != null) {
Iterator<Map.Entry<String, Object>> iterator = entries.iterator();//设置迭代器,遍历单个键值对
while(iterator.hasNext()) {//游标在第一个遍历对象之前
Map.Entry<String, Object> entry =iterator.next();
Object key = entry.getKey();//列名
Object value = entry.getValue();//列值
System.out.println(key+":"+value);
}
}
}
return list;
}
@RequestMapping("/getOne")
public String getOne(){
String sql = "SELECT studentName FROM student WHERE studentNo=111";
String rowStudentName = jdbcTemplate.queryForObject(sql, String.class);//studentName ==> String.class
System.out.println(rowStudentName);
return rowStudentName;
}
}
TestListAndMap
package com.example.demo;
import java.util.ArrayList;
import java.util.HashMap;
public class TestListAndMap {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("w");
list.add("x");
list.add("d");
System.out.println(list);//[]
HashMap<String,String> map=new HashMap<>();
map.put("1","sj1");
map.put("2","sj2");
map.put("3","sj3");
System.out.println(map);//{}
}
}
5.测试
testTest
package com.example.demo;
import org.jasypt.encryption.StringEncryptor;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class testTest {
@Autowired
StringEncryptor encryptor;
@Test
public void getPass() {
String url = encryptor.encrypt("jdbc:mysql://127.0.0.1:3306/dongge?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8");//连接地址
String name = encryptor.encrypt("root");//数据库用户名
String password = encryptor.encrypt("kgc");//数据库密码
System.out.println("[加密 url]"+url);
System.out.println("[加密 name]"+name);
System.out.println("[加密 password]"+password);
String deUrl=encryptor.decrypt("2br1CumzOtWl+tluAaN7pvWtVsEGtIkEDR9l59aPy+Z+0+xUQPHYjvnL2iYJTz9CSL0G5gQZgyvoQlxNhUjqC9yYgCLoMkTRkEhj2U6jf2TmprYUle0bF/akwwoxmTI1hvp3pHbiB/Q=");
String deName=encryptor.decrypt("s2aQPTvPjvvMp6s4V/2zkw==");
String dePwd=encryptor.decrypt("T7lZKsTSWF7fmrpiXcIY/Q==");
System.out.println("[解密 url]"+deUrl);
System.out.println("[解密 name]"+deName);
System.out.println("[解密 password]"+dePwd);
// //每次加密生成的字符串都能解密成同一个明文,因为解密和加密会对应当时配置的密钥(唯一标识,类似于一个凭证)
// String deName=encryptor.decrypt("L6tPr3h+iE92ZAluXcmGVQ==");
// String dePwd=encryptor.decrypt("f8qBh6Ng5O31jilAmCVbtA==");
// System.out.println(deName);
// System.out.println(dePwd);
// String deName2=encryptor.decrypt("IOgKwa5WXT4DwfEvfpAdHg==");
// String dePwd2=encryptor.decrypt("HeDmiQCRrU91n+B7nMG7rQ==");
// System.out.println(deName2);
// System.out.println(dePwd2);
//
// Assert.assertTrue(name.length() > 0);//满足就放行
// System.out.println(1);
// Assert.assertTrue(password.length() >0);
// System.out.println(2);
}
}
6.效果
1.url
2br1CumzOtWl+tluAaN7pvWtVsEGtIkEDR9l59aPy+Z+0+xUQPHYjvnL2iYJTz9CSL0G5gQZgyvoQlxNhUjqC9yYgCLoMkTRkEhj2U6jf2TmprYUle0bF/akwwoxmTI1hvp3pHbiB/Q=
2.username
0aQ/N82hAhpqw3lqKJIPIg==
3.password
mM+zVO45giLycgS16SmrvQ==