使用指南
(已封装了连接数据库的代码,只需要传入sql语句和连接数据库账号和密码)
当你用原生的Java代码,需要连接数据库并查询某个表中的数据时,创建下面这个类并复制代码到你创建的类中,在这个类中填写数据库名,数据库账号名,密码,填写完成之后即可使用。
注意连接数据库要使用JDBC
直接下载JDBC文件,复制粘贴到以下地方即可,下载链接在这:链接: https://pan.baidu.com/s/11-7Euy0wkpteUD1tNrnAJQ
public class ConnectIonDatabase {
Connection connection = null;
Statement statement = null ;
ResultSet resultSet =null;
public List SelectEntityListFromDB(String SQL,Class needClass){
List EntityMapList = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/填写需要访问的数据库名字", "填写数据库账号名", "填写数据库密码");
statement = connection.createStatement();
resultSet = statement.executeQuery(SQL);
if (resultSet == null ){
return EntityMapList;
}
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
EntityMapList = new ArrayList<>();
while(resultSet.next()){
Object o = needClass.newInstance();
Map stringEntityMap = new HashMap();
for (int i = 1; i <= columnCount; i++) {
stringEntityMap.put(metaData.getColumnName(i), resultSet.getObject(i));
}
map2Bean(stringEntityMap,o);
EntityMapList.add(o);
}
} catch (Exception e) {
e.printStackTrace();
}
return EntityMapList;
}
/* 将map集合转换成对应的实体类 */
public static Object map2Bean(Map<String, Object> map, Object object) {
if (map == null || object == null) {
return null;
}
try {
BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (map.containsKey(key)) {
Object value = map.get(key);
// 得到property对应的setter方法
Method setter = property.getWriteMethod();
setter.invoke(object, value);
}
}
} catch (IntrospectionException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
return object;
}
}
使用案例:
数据库中我有一个名字为test的数据库。
在test数据库中我有student表。
那么使用方式如下:
// 测试自己封装的代码
@Test
public void testSelectEntityListFromDB(){
// 可以写普通的查询语句select * from student,我这里写的是分页查询,只要是要求有返回值的。
String sql = "select * from student order by age limit 0,2";
ConnectIonDatabase connect = new ConnectIonDatabase();
List list = connect.SelectEntityListFromDB(sql, Student.class);
System.out.println(list);
}
结果:
[Student{name='ad1', sex='男', age=1}, Student{name='hahah1', sex='女', age=2}]