@File
2019-08-09T07:30:30.000000Z
字数 5250
阅读 283
test java
简述:
基于 Jdk1.8+Mysql8+ljson,主要组成部分
Mysql配置类、LMysql父类、Select查操作类、Insert增操作类、Update改操作类、Delete删操作类、Querysql执行类。
- 待实现功能:
- 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()
LMysqlpublic 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);
LMysqlpublic 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();
LMysqlpublic 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();
LMysqlpublic 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);
LMysqlpublic class Query extends LMysql<Query,Object>该方法不同于操作类,用于直接运行sql
// 创建配置类对象实例Mysql mysql = new Mysql();// 执行有结果集的sqlmysql.query("SELECT * FROM `user`");// 带占位符mysql.query("SELECT ? FROM `user` WHERE `user_name`=?","*","李大爷");// 执行无结果集的sqlmysql.execute("UPDATE `user` SET `user_name`='李大爷'");// 带占位符同上...