zzjSqlHandle(操作数据库很烦?来试试它?)
zhuzhengjundev
gitee地址:https://gitee.com/Zhuzhengjuna/j-sql-handle
简介:
你只需要引入一个jar包(目前支持mysql和sqlserver),配置数据库信息之后,然后准备一个实体类传入对应的方法中,即可对数据表进行增,删,改,查,分页查,当然,你也可以写sql语句传入方法中。除此之外,你还可以使用事务,在对所有sql操作成功之后一起提交事务即操作成功,否则回滚掉事务,让之前的sql操作失效。
一:来看看如何配置吧!
① 配置的话很简单,你只需要把jSqlHandle.jar
包放在对应的lib目录下,然后在WebContent
目录下新建一个文件夹名为:config
,然后在config
文件夹里新建一个dbconfig.properties
文件,切记文件的名字和后缀名要一模一样,否则连接不上数据库
② 在上述正确的路径下新建文件夹和文件之后,你需要在dbconfig.properties
文件里编写你的数据库配置内容,需要四个变量,分别为driverClassName(驱动)、db_url(数据库地址)、db_name(数据库连接名)、db_password(数据库连接密码)。
实例1(mysql版):
driverClassName=com.mysql.cj.jdbc.Driver
db_url=jdbc:mysql://localhost:3306/my_store?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
db_name=root
db_password=123456
实例2(sqlserver版):
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
db_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TEST
db_name=sa
db_password=123456
你可以将以上四行代码复制粘贴到你新建的dbconfig.properties
文件中,然后修改后面对应你数据库信息的值。
当然,如果你不想配置可以直接看看 使用说明
,在使用的时候传这些参数。
二:来看看使用说明吧!
1、使用该jar包你只需要知道JDbHandle
类
①、JDbHandle
是主要的操作数据表的类,只有它可操作数据表,来说说怎么使用吧,首先去new一个它,这个不用多说吧,不过在new它的同时,你得传入一个参数Boolean isOpenTran
,看名字和类型应该可以猜出大概吧,是否自动提交。当传入的参数为true,即你开启了一个事务,在你对数据表操作的增删改等事情之后,它其实都没有真正生效,之后当你操作完所有逻辑之后,再调用该类的commit
方法,即可生效,不过你也可以选择调用rollback
方法,即把之前的增删改全部撤回,一般只有当同时操作有关联的多张表时才会传true
,否则传入false
就好,当传入false
,即你对数据表操作的任何操作都是即时生效的,你也不需要在操作完逻辑之后调用commit
或者rollback
方法。不过最后要说的是,不过传入的是true
还是false
,就算你只new了一次它,没有调用里面的方法,你也需要调用一个方法,那就是stopConn
,即关闭数据库连接,因为你每new一个JDbHandle
类,即连接数据库一次。
注意
:如果你上面的配置不会使用或者你的项目没有WebContent目录,你可以直接通过new JDbHandle(driverClassName, db_url, db_name, db_password)
或者new JDbHandle(isOpenTran, driverClassName, db_url, db_name, db_password)
去使用它
2、你还需要知道一件事
在以上配置配好之后,简单的看一下使用说明后,你还需要做一件事:
①、那就是你需要根据数据表的名称,表内各字段的名称来创建实体类(名称的字母必须一模一样,不区分大小写)
②、当然,如果你直接写sql字段串也可以,同样也是调用下面的增删改查方法(直接传入即可)
③、做完这些之后你就可以调用增删改查方法了,下面的有对增删改查四种方法进行介绍…
3、如何插入insert
JDbHandle dbHandle = new JDbHandle(false);
//该实体类后面的参数作为插入的字段数据值(注:切记该实体类的类名和成员变量名字要与数据表对应,不能缺少或添加字段,不区分大小写)
Users users = new Users("value2","value3","value4","value5");
int index = dbHandle.insert(users); //大于0代表插入成功
dbHandle.stopConn();
4、如何删除dalete
JDbHandle dbHandle = new JDbHandle(false);
//该实体类后面的参数作为删除的字段条件值(注:切记该实体类的类名和成员变量名字要与数据表对应,不能缺少或添加字段,不区分大小写)
Users users = new Users("value2","value3","value4","value5");
int index = dbHandle.dalete(users); //大于0代表删除成功
dbHandle.stopConn();
5、如何更新update
JDbHandle dbHandle = new JDbHandle(false);
//该实体类后面的参数作为更新的字段数据值(注:切记该实体类的类名和成员变量名字要与数据表对应,不能缺少或添加字段,不区分大小写)
Users users = new Users("value2","value3","value4","value5");
//不过在调用更新方法的时候需要多传入一个参数,即你需要使用哪些字段名称作为更新条件,可多个条件,中间用英文逗号隔开,作为字符串传入即可
//当然,如果你直接写sql字符串,就不需要传入第二个参数
int index = dbHandle.update(users,"userName,userPwd");//大于0代表更新成功
dbHandle.stopConn();
6、如何查询select
JDbHandle dbHandle = new JDbHandle(false);
//该实体类后面的参数作为查询的字段条件值(注:切记该实体类的类名和成员变量名字要与数据表对应,不能缺少或添加字段,不区分大小写)
Users users = new Users("value2","value3","value4","value5");
//第一个参数为查询表的实体类,各个字段代表查询条件,第二个参数表示是否模糊查询,第三个参数代表查询到的数据转成对应的实体类型
List<Users> userList = dbHandle.select(users,false, Users.class);
或者
//第一个参数为查询表的实体类,各个字段代表查询条件,第二个参数表示是否模糊查询,第三个参数查询排序的字段,第四个参数排序方式(是否正序),第五个参数代表查询到的数据转成对应的实体类型
List<Users> userList = dbHandle.select(users,false,"key1,key2",true, Users.class);
dbHandle.stopConn();
7、如何查询一条数据selectFirst
JDbHandle dbHandle = new JDbHandle(false);
//该实体类后面的参数作为查询的字段条件值(注:切记该实体类的类名和成员变量名字要与数据表对应,不能缺少或添加字段,不区分大小写)
Users users = new Users("value2","value3","value4","value5");
//第一个参数为查询表的实体类,各个字段代表查询条件,第二个参数表示是否模糊查询,第三个参数代表查询到的数据转成对应的实体类型
Users user = dbHandle.selectFirst(users,false, Users.class);
或者
//第一个参数为查询表的实体类,各个字段代表查询条件,第二个参数表示是否模糊查询,第三个参数查询排序的字段,第四个参数排序方式(是否正序),第五个参数代表查询到的数据转成对应的实体类型
Users user2 = dbHandle.selectFirst(users,false,"key1,key2",true, Users.class);
dbHandle.stopConn();
7、如何查询单行单列一个值selectSingle
JDbHandle dbHandle = new JDbHandle(false);
String gender = (String)dbHandle.selectSingle("SELECT gender FROM Users WHERE NAME = '小明'");
dbHandle.stopConn();
6、如何分页查询selectPage
JDbHandle dbHandle = new JDbHandle(false);
//该实体类后面的参数作为查询的字段条件值(注:切记该实体类的类名和成员变量名字要与数据表对应,不能缺少或添加字段,不区分大小写)
Users users = new Users("value2","value3","value4","value5");
//不过在调用分页查询方法的时候需要多传入五个参数,即是否模糊查询,查询排序的字段,以及排序方式(是否正序),你要查询的页码,还有每页显示的数据条数,查询到的数据转成对应的实体类型
//当然,如果你直接写sql字符串,只需要传入两个参数,即你要查询的页码,还有每页显示的数据条数,不过这里要注意一点,传入的sql字符串结尾不要加封号
//这里selectPage方法传参的意思按照每页10条数据且按照 row_id 和 user_name 字段倒叙查询出第一页的数据,
JPageData<Users> jPageData = dbHandle.selectPage(users2,false," row_id , user_name ",false,1,10, Users.class);
jPageData.pageIndex //当前页
jPageData.pageSize //每页数量
jPageData.pageAll //总页数
jResponse.total; //总数量
jResponse.data; //查询到的数据
dbHandle.stopConn();
7、如果你不想通过实体类操作,或者说实体类满足不了你的需求,你可以自己编写sql
语句,以字符串的格式传入上面五种方法中传实体类的位置
JDbHandle dbHandle = new JDbHandle(false);
dbHandle.insert("INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)");
dbHandle.delete("DELETE FROM 表名称 WHERE 列名称 = 值 AND 列名称 = 值");
//记住更新方法如果使用实体类得传第二个参数,即你需要使用哪些字段名称作为更新条件,可多个条件,中间用逗号隔开,作为字符串传入即可;这里直接写sql不需要传
dbHandle.update("UPDATE 表名称 SET 更新列名称 = 新值 WHERE 条件列名称 = 条件值");
dbHandle.select("SELECT 列名称 FROM 表名称 WHERE 条件列名称 = 条件值",Entity.class);
dbHandle.selectPage("SELECT 列名称 FROM 表名称 WHERE 条件列名称 = 条件值",1,10,Entity.class);//注意这里传参的sql语句结尾不要加封号
8、工具类 JTool
//使用它可以直接获取一个uuid的值,返回类型为String。
JTool.getUuid()
//使用它可以直接获取当前系统时间,返回类型为String。
JTool.getDate()
三:最后附上总体的使用案例吧…
import zhuzhengjun.handle.JDbHandle;
import zhuzhengjun.handle.JResponse;
public class Main {
public static void main(String[] args) {
JDbHandle jDbHandle = getJDbHandle();
//使用sql增加
int index = jDbHandle.insert("insert into bysj (name,qq,type,time) values ('34235','42145','53434','5342');");
System.out.println("增加了 " + index + " 条数据");
//使用sql增加
//使用实体类增加
Bysj bysj = new Bysj();//Bysj.class与 bysj 表 字段一致,不区分大小写
bysj.name = "2420";
bysj.qq = "213450";
bysj.type = "22420";
bysj.time = "2420";
int index = jDbHandle.insert(bysj);
System.out.println("增加了 " + index + " 条数据");
//使用实体类增加
//使用sql删除
int index= jDbHandle.delete("delete from bysj where id = '20';");
System.out.println("删除了 " + index + " 条数据");
//使用sql删除
//使用实体类删除
bysj = new Bysj();
bysj.id = "20"; //使用 id = 20 作为删除条件
int index= jDbHandle.delete(bysj);
System.out.println("删除了 " + index + " 条数据");
//使用实体类删除
//使用sql更新
int index = jDbHandle.update("update bysj set name = '测试' where id = '20';");
System.out.println("更新了 " + index + " 条数据");
//使用sql更新
//使用实体类更新
bysj = new Bysj();
bysj.id = "20"; //需要更新哪个字段就加哪个
bysj.name = "测试"; //需要更新哪个字段就加哪个
int index = jDbHandle.update(bysj, "id");//第二个参数是作为条件的,例如这里将 id = 20 作为条件
System.out.println("更新了 " + index + " 条数据");
//使用实体类更新
//使用sql查询
List<Bysj> bysjList = jDbHandle.select("select * from bysj where id = '1'", Bysj.class);
System.out.println(bysjList.get(0).name);
//使用sql查询
//使用实体类查询
bysj = new Bysj();
bysj.id = "1"; //使用 id = 1 作为查询条件
List<Bysj> bysjList = jDbHandle.select(bysj, true, Bysj.class); //第二个参数为true是模糊查询,false则是等于
System.out.println(bysjList.get(0).name);
//使用实体类查询
//查询单行单列一个值
String str = (String)jDbHandle.selectSingle("SELECT GENDER FROM user WHERE NAME = '小明'");
//查询一条数据
User user = jDbHandle.selectFirst("SELECT * FROM user WHERE NAME = '小明'", Sm_User.class);
jDbHandle.stopConn();
}
private static JDbHandle getJDbHandle() {
return new JDbHandle("com.mysql.cj.jdbc.Driver",
"jdbc:mysql://localhost:3306/a_bysj?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC",
"root",
"123456");
}
}