# risingsun **Repository Path**: lifuxu/risingsun ## Basic Information - **Project Name**: risingsun - **Description**: 一款高效的JDBC工具,可以免去大部分JDBC 代码和获取结果集的工作。可以自动将结果集中的内容映射到相应的对象。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-02-28 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍 risingsun是一款高效的JDBC工具,可以免去大部分JDBC 代码和获取结果集的工作。可以 **自动将结果集中的内容映射到相应的对象** 。 # 入门 ## 安装 只需要将[risingsun.jar](https://pan.baidu.com/s/11ykPgNM1Aw1NsqEIAs7Iyg)文件(提取码:1111)至于 **类路径** 即可 ## 配置数据库连接文件 在项目src目录下创建**database.properties**文件,格式如下 ```properties driver= url= username= password= ``` 分别填写要连接数据库的驱动、url、用户名密码 # 使用方法 ## 创建DataProcess对象 ```java DataProcess dataProcess = new DataProcess(); ``` | 参数 | 类型 | 说明 | | :-------: | :--: | :----------------------------------------------------------: | | camelCase | boolean | 是否开启驼峰命名自动映射,即从数据库列名 a_column 映射到经典 Java 属性名aColumn。默认为:flase | ## getObject() getObject方法可以查询某表的结果和相应的实例对象,已指定的对象引用作为返回类型 | 参数 | 类型 | 说明 | | :--------: | :----: | :--------------------------------: | | sql | String | 要执行的sql语句 | | resultType | Class | 要返回bean实例的class类型 | | args | Object | sql语句中要设置的参数,没有可以省略 | | 参数 | 类型 | 说明 | | :----------: | :-----------------: | :----------------------------------------------------------: | | sql | String | 要执行的sql语句 | | resultType | Class | 要返回bean实例的class型类型 | | resultMapper | Map | bean对象名和数据库列名映射关系。key:对象属性名,value:数据库列名,若对象的属性名和数据库列名相同,则可以省略该参数 | | args | Object | sql语句中要设置的参数,没有可以省略 | ### 例子 下面来举几个列子,首先我们建立一个Teacher表和一个Teacher类 ```sql CREATE TABLE department( department_id VARCHAR(10) PRIMARY KEY, depatrment_name VARCHAR(10) NOT NULL ) CREATE TABLE teacher( teacher_id INT PRIMARY KEY AUTO_INCREMENT, teacher_name VARCHAR(5), department_id VARCHAR(10), birthday DATE, FOREIGN KEY (department_id) REFERENCES department(department_id) ) ``` ```java public class Teacher { private int teacher_id; private String teacher_name; private String department_id; private Date birthday; } ``` #### bean实例属性名与表列名相同 bean实例属性名和表中的列名相同时,当我们要查询指定教师编号的教师信息时,可以这样写 ```java DataProcess dataProcess = new DataProcess(); String sql = "select *from teacher where teacher_id = ?"; Teacher teacher = dataProcess.getObject(sql, Teacher.class,1); ``` 这样很容易就可以获取到教师这个实例对象,操作很简单吧。 #### bean实例属性使用驼峰命名规则 我们知道,java中的对象名字一般习惯使用驼峰命名 ```java public class Teacher { private int teacherId; private String teacherName; private String departmentId; private Date birthday; } ``` 若数据库命名采用a_column时,我们可以在创建DataProcess时使用有参构造,将camelCase值设为true ```java DataProcess dataProcess = new DataProcess(true); String sql = "select *from teacher where teacher_id = ?"; Teacher teacher = dataProcess.getObject(sql, Teacher.class,1); ``` #### bean实例属性名和数据库列名不一致 如果bean实例属性名和数据库列名不一致的情况下,那么我们创建map集合来进行映射 ```java public class Teacher { private int id; private String name; private String departmentId; private Date birthday; } ``` 我们可以看到bean对象中id,name和数据库的列名不一致,我们只需映射这两个属性即可 ```java DataProcess dataProcess = new DataProcess(true); String sql = "select *from teacher where teacher_id = ?"; Map map = new HashMap<>(); map.put("id","teacher_id"); map.put("name","teacher_name"); Teacher teacher = dataProcess.getObject(sql, Teacher.class,map,1); ``` #### 获取基本数据类型 当然我们如果只想查询一个数据我们可以直接返回他的基本数据类型,比如要查询所有的教师姓名我们可以这样去写 ```java DataProcess dataProcess = new DataProcess(true); String sql = "select teacher_name from teacher"; List nameList = dataProcess.getObjectList(sql, String.class); ``` ## getObjectList() 该方法是获取查询结果集合,和getObject方法使用类似 | 参数 | 类型 | 说明 | | :--------: | :----: | :--------------------------------: | | sql | String | 要执行的sql语句 | | resultType | Class | 要返回bean实例的class类型 | | args | Object | sql语句中要设置的参数,没有可以省略 | | 参数 | 类型 | 说明 | | :----------: | :-----------------: | :----------------------------------------------------------: | | sql | String | 要执行的sql语句 | | resultType | Class | 要返回bean实例的class型类型 | | resultMapper | Map | bean对象名和数据库列名映射关系。key:对象属性名,value:数据库列名,若对象的属性名和数据库列名相同,则可以省略该参数 | | args | Object | sql语句中要设置的参数,没有可以省略 | 我们还使用Teacher类举例 ```java public class Teacher { private int teacherId; private String teacherName; private String departmentId; private Date birthday; } ``` 比如我们要查询teacher表中所有的teacher信息 ```java DataProcess dataProcess = new DataProcess(true); String sql = "select *from teacher"; List teacherList = dataProcess.getObjectList(sql, Teacher.class); ``` 这里我们使用了驼峰命名,若对象属性名和表列名不一致我们可以创建map集合进行属性名和表的列名进行映射 ## getMapper() 当我们表中的列名很多的时候,而我们只需要其中几个的时候,可以使用这个方法。它可以返回我们所需要的map集合,**key为表的列名,value为数据库当前行该列的值**。当然若创建对象的时候将**camelCase设置为true**时,map集合中的key值也会是驼峰命名规则。 | 参数 | 类型 | 说明 | | :--: | :----: | :--------------------------------: | | sql | String | 要执行的sql语句 | | args | Object | sql语句中要设置的参数,没有可以省略 | 若我们只想获取teacher表中的teacher_name,birthday两个值,我们可以这样写。 ```java DataProcess dataProcess = new DataProcess(); String sql = "select teacher_name,birthday from teacher where teacher_id = ?"; Map mapper = dataProcess.getMapper(sql, 1); ``` ## updateRow() 这个方法主要是用来更新数据库,返回的参数是数据库变化的行数。 | 参数 | 类型 | 说明 | | :--: | :----: | :--------------------------------: | | sql | String | 要执行的sql语句 | | args | Object | sql语句中要设置的参数,没有可以省略 | ```java DataProcess dataProcess = new DataProcess(); String sql = "update risingsun.teacher\n" + "set teacher_name = '张三'\n" + "where teacher_id = ?;"; dataProcess.updateRow(sql,1); ``` ## insertRow() 向数据库插入数据,返回插入的行数 | 参数 | 类型 | 说明 | | :--: | :----: | :--------------------------------: | | sql | String | 要执行的sql语句 | | args | Object | sql语句中要设置的参数,没有可以省略 | ```java DataProcess dataProcess = new DataProcess(); String sql = "insert into risingsun.teacher (teacher_name, department_id, birthday) values (?,?,?);" dataProcess.insertRow(sql,"赵六","1001","2001-05-30"); ``` ## deleteRow() 删除数据库数据,返回数据库变化的行数 | 参数 | 类型 | 说明 | | :--: | :----: | :--------------------------------: | | sql | String | 要执行的sql语句 | | args | Object | sql语句中要设置的参数,没有可以省略 | ```java DataProcess dataProcess = new DataProcess(); String sql = "delete from risingsun.teacher where teacher_id = ?"; dataProcess.deleteRow(sql,5); ```