@File
2019-08-09T07:30:30.000000Z
字数 5250
阅读 213
test
java
简述:
基于 Jdk1.8+Mysql8+ljson,主要组成部分
Mysql
配置类、LMysql
父类、Select
查操作类、Insert
增操作类、Update
改操作类、Delete
删操作类、Query
sql执行类。
- 待实现功能:
- case判断
- 连表操作
- 分组后再判断
重复提示:当前版本由项目需要修改后,需要依赖 ljson 运行
ljson下载(当前版本lmysql以包含)
ljson使用说明
lmysql/db.properties
# 驱动,这里是1.8+的驱动
driverClassName = com.mysql.cj.jdbc.Driver
# 数据库访问连接
url = jdbc:mysql://localhost:3306/project?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
# 用户名
username = root
# 用户密码
password = root
db.properties
文件,固定配置文件位置(资源文件夹)
// 包导好了
// 数据库启动了
// 配置和路径都设置好了
// 假设一切都准备好了
// 实例化一个配置类,没报错就可以了
Mysql mysql = new Mysql();
// 用完记得关掉连接
mysql.close();
事务功能
// 实例化配置类时传入 true 启动事务
Mysql mysql = new Mysql(true);
// 或者通过通过 begin() 启动
Mysql mysql2 = new Mysql();
mysql2.begin();
// 实例化一个事务配置类
Mysql mysql = new Mysql(true);
// 通过 save() 设置保存点
mysql.save("a"); // 第一个字符必须是字母
// 实例化一个事务配置类
Mysql mysql = new Mysql(true);
// 这里执行了一堆sql
...
// 通过 commit() 提交
mysql.commit();
// 也可以通过 close() 关闭连接并提交
mysql.close()
// 实例化一个事务配置类
Mysql mysql = new Mysql(true);
// 执行一堆sql
...sql1
// 创建了一个保存点
mysql.save("lidaye");
// 再执行一堆sql
...sql2
// 通过 back() 回滚到保存点 lidaye
// back() 不传参则全部回滚
mysql.back("lidaye");
// 提交事务并关闭连接
mysql.close();
// 只执行了 sql1 的sql命令
sql运行错误获取
errorList
中errorList
是一个List,但是只会保存 5 条记录
// 创建一个配置类
Mysql mysql = new Mysql();
// 模拟两个不存在的表的查询
mysql.select().query("errortable1");
mysql.select().query("errortable2");
// 通过 getErrorList() 获得错误信息
System.out.println(mysql.getErrorList());
// [Table 'project.errortable1' doesn't exist, Table 'project.errortable2' doesn't exist]
abstract public class LMysql<T,R>
主要逻辑共用抽象类,平时调用不会直接用到,需要依靠其他操作类的继承调用。
// from
.from("表名")
.from(ILJson对象)
// where
.where("字段名","条件值")
.where("字段名","条件值",换位符模式(默认true))
.where("字段名","条件值","逻辑运算符(默认=)")
.where("字段名","条件值","逻辑运算符(默认=)","拼接条件符(默认AND)",换位符模式(默认true))
// 大于判断
.whereGt("字段名","条件值")
.whereGt("字段名","条件值",换位符模式(默认true))
.whereGt("字段名","条件值","拼接条件符(默认AND)")
.whereGt("字段名","条件值","拼接条件符(默认AND)",换位符模式(默认true))
// 小于判断
.whereLt("字段名","条件值")
.whereLt("字段名","条件值",换位符模式(默认true))
.whereLt("字段名","条件值","拼接条件符(默认AND)")
.whereLt("字段名","条件值","拼接条件符(默认AND)",换位符模式(默认true))
// IN包含判断
.whereIn("字段名",多个可能包含的值...)
// IN包含判断(换位符模式)
.whereInPre("字段名",多个可能包含的值...)
// IN包含判断(OR 拼接条件)
.whereOrIn("字段名",多个可能包含的值...)
// IN包含判断(OR 拼接条件 + 换位符模式)
.whereOrInPre("字段名",多个可能包含的值...)
// 模糊查询条件
.whereLike("字段名","条件值")
.whereLike("字段名","条件值",换位符模式(默认true))
.whereLike("字段名","条件值","拼接条件符(默认AND)")
.whereLike("字段名","条件值","拼接条件符(默认AND)",换位符模式(默认true))
// 范围条件
.between("字段名","开始值","结束值")
.between("字段名","开始值","结束值",换位符模式(默认true))
.between("字段名","开始值","结束值","拼接条件符(默认AND)")
.between("字段名","开始值","结束值","拼接条件符(默认AND)",换位符模式(默认true))
// 群组
.group("字段名")
// 查询限制
.limit("显示条目数")
.limit("起始条目数","显示条目数")
// 升序
.asc(一个或多个排序字段名...)
// 降序
.desc(一个或多个排序字段名...)
// 执行操作对象(该方法必须作为最后一个方法执行)
.query()
.query(显示条目数)
.query(起始条目数,显示条目数)
.query("表名")
.query("表名",显示条目数)
.query("表名",起始条目数,显示条目数)
// 返回sql语句字符串(该方法必须作为最后一个方法执行)
.getSql()
LMysql
public class Select extends LMysql<Select,List<Map>>
运行结果返回以List的集合
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 普通的全表全字段查询
List<Map> res = mysql.select().query("user");
ILJson映射类混合查询
// 主要方法 query(ILJson对象)
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 传入继承了ILJson接口的User类的实例
List<User> res = mysql.select().query(new Usre());
// 通过 Class 对象实现(两个效果一样)
List<User> res = mysql.select().query(Usre.class);
LMysql
public class Update extends LMysql<Update,Integer>
运行结果返回修改的条目数
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 修改一个指定id的指定字段的值
int res = mysql
.update("user")
.set("user_name","李大爷")
.where("id",1)
.query();
ILJson映射类配置修改
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 创建一个继承了ILJson接口的对象
ILJson user = new User();
user.setName("李大爷");
user.setAge(25);
user.setSex("nan")
// 修改一个指定id的数据
int res = mysql
.update(user) // 传入对象,可在参数2指定修改的属性
.where("id",1)
.query();
LMysql
public class Insert extends LMysql<Insert,Integer>
运行结果返回插入的条目数
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 随便新增两条条数据
int res = mysql
// insert()可以传 Map 和 ILJson 对象,传对象默认新增一条
// 后期可能考虑传list<Map>插入多条
.insert("user_name","user_pwd","age")
.value("李大爷","123456",25)
.vlaue("李学霸","654321",18)
.query("user");
ILJson映射类配置新增
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 创建一个继承了ILJson接口的对象
ILJson user = new User();
user.setName("李大爷");
user.setAge(25);
user.setSex("nan")
// 新增一条数据
int res = mysql
.insert(user) // 传入对象
.query();
LMysql
public class Delete extends LMysql<Delete,Integer>
运行结果返回删除的条目数
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 随便删除一条记录
int res = mysql
.delete("user")
.where("id",1)
.query();
ILJson映射类配置删除
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 创建一个继承了ILJson接口的对象
ILJson user = new User();
user.setName("李大爷");
user.setAge(25);
user.setSex("nan")
// 删除一条数据
int res = mysql
// 传入一个对象,并指定以name值为条件,一般用id
.delete(user,"name")
.query(1);
LMysql
public class Query extends LMysql<Query,Object>
该方法不同于操作类,用于直接运行sql
// 创建配置类对象实例
Mysql mysql = new Mysql();
// 执行有结果集的sql
mysql.query("SELECT * FROM `user`");
// 带占位符
mysql.query("SELECT ? FROM `user` WHERE `user_name`=?","*","李大爷");
// 执行无结果集的sql
mysql.execute("UPDATE `user` SET `user_name`='李大爷'");
// 带占位符同上
...