maven:
<!---->
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/org.springframework.jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.jdbc</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<!---->
JdbcUtils:
package com.example.demo;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.yaml.snakeyaml.Yaml;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.*;
/**
* 说明:通过表名和实体类增删改查
* 创建人:yangkai
*/
public class JdbcUtils {
private volatile static JdbcTemplate jdbcTemplate = null;
private volatile static String dataBase = "";
public static void main(String[] args) throws Exception{
}
private JdbcUtils() {
}
/**
* getJdbcTemplate 方法
* 说明:连接多数据源可选择数据库名称
* 创建人:yangkai
* @param newDataBase:选择连接的数据库名
* @return org.springframework.jdbc.core.JdbcTemplate
* @throws
*/
public static JdbcTemplate getJdbcTemplate(String newDataBase) throws IOException {
if((jdbcTemplate==null)||(!dataBase.equals(newDataBase))){
synchronized (JdbcUtils.class) {
String diverClassName = "";
String url = "";
String userName = "";
String passWord = "";
Yaml yaml = new Yaml();
InputStream yml = JdbcUtils.class.getClassLoader().getResourceAsStream("config/application.yml");//或者app.yaml
InputStream properties = JdbcUtils.class.getClassLoader().getResourceAsStream("config/application.properties");//或者app.yaml
if (yml != null) {//读取yaml文件的数据库配置
Map<String, Object> map = yaml.loadAs(yml, Map.class);
Map<String,String> map1 = (Map) map.get("jdbc");
if(newDataBase.equals(map1.get("dataSourceNames"))){//匹配数据库
}else if(newDataBase.equals(map1.get("dataSourceNames"))){//匹配数据库
}else {
diverClassName=map1.get("driver");
url=map1.get("url");
userName=map1.get("username");
passWord=map1.get("password");
}
//通过map我们取值就可以了.
}else if(properties != null){//读取properties文件的数据库配置
Properties p = new Properties();
p.load(properties) ;
if(newDataBase!=null){//匹配数据库
diverClassName=p.getProperty("spring.datasource."+newDataBase+".driver-class-name");
url=p.getProperty("spring.datasource."+newDataBase+".url");
userName=p.getProperty("spring.datasource."+newDataBase+".username");
passWord=p.getProperty("spring.datasource."+newDataBase+".password");
}else {
diverClassName=p.getProperty("spring.datasource.driver-class-name");
url=p.getProperty("spring.datasource.url");
userName=p.getProperty("spring.datasource.username");
passWord=p.getProperty("spring.datasource.password");
}
}else {
System.out.println("未找到配置文件");
}
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(diverClassName);
dataSource.setUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(passWord);
jdbcTemplate = new JdbcTemplate(dataSource);
}
}else{}
return jdbcTemplate;
}
public static boolean update(String dataBase_1,String tableName,Object entity){
try {
Map<String, Object> map = new HashMap<String, Object>();
BeanInfo beanInfo = Introspector.getBeanInfo(entity.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {
continue;
}
Method getter = property.getReadMethod();
Object value = getter!=null ? getter.invoke(entity) : null;
map.put(key, value);
}
List<String> changes=new ArrayList<>();
Iterator iterator=map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry entry = (Map.Entry) iterator.next();
if(entry.getValue()==null){
}else if("id".equals(String.valueOf(entry.getKey()))){
}else if(StringUtils.isNumeric(String.valueOf(entry.getValue()))){
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append(entry.getKey());
stringBuilder.append("=");
stringBuilder.append(entry.getValue());
changes.add(stringBuilder.toString());
}else {
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append(entry.getKey());
stringBuilder.append("=");
stringBuilder.append(entry.getValue());
changes.add(stringBuilder.toString());
}
}
StringBuilder sql=new StringBuilder();
sql.append("UPDATE ");
sql.append(tableName);
sql.append(" SET ");
sql.append(StringUtils.join(changes,","));
sql.append(" WHERE id=");
sql.append(map.get("id"));
JdbcUtils.getJdbcTemplate(dataBase_1).update(sql.toString());
return true;
}catch (Exception e){
return false;
}
}
public static boolean insert(String dataBase_1,String tableName,Object entity){
try {
Map<String, Object> map = new HashMap<String, Object>();
BeanInfo beanInfo = Introspector.getBeanInfo(entity.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {
continue;
}
Method getter = property.getReadMethod();
Object value = getter!=null ? getter.invoke(entity) : null;
map.put(key, value);
}
List<String> names=new ArrayList<>();
List<String> values=new ArrayList<>();
Iterator iterator=map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry entry = (Map.Entry) iterator.next();
if(entry.getValue()==null){
}else if(StringUtils.isNumeric(String.valueOf(entry.getValue()))){
names.add(String.valueOf(entry.getKey()));
values.add(String.valueOf(entry.getValue()));
}else {
names.add(String.valueOf(entry.getKey()));
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("'");
stringBuilder.append(entry.getValue());
stringBuilder.append("'");
values.add(stringBuilder.toString());
}
}
StringBuilder sql=new StringBuilder();
sql.append("INSERT INTO ");
sql.append(tableName);
sql.append("(");
sql.append(StringUtils.join(names,","));
sql.append(")");
sql.append(" VALUES(");
sql.append(StringUtils.join(values,","));
sql.append(")");
JdbcUtils.getJdbcTemplate(dataBase_1).execute(sql.toString());
return true;
}catch (Exception e){
return false;
}
}
}