# easyJDBC
**Repository Path**: backpackerxl/easy-jdbc
## Basic Information
- **Project Name**: easyJDBC
- **Description**: 这是java连接mysql的一个小工具
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 0
- **Created**: 2021-12-27
- **Last Updated**: 2022-11-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: MySQL, Java, JSON
## README
EasyJDBC
#### 简介
使用前的准备,[`点我`](https://gitee.com/backpackerxl/easy-jdbc/tree/v0.1.3/README.md)
> 使用方式准备工作都一样此次更新了一些编写代码的习惯,
#### Maven用户
- 在jar包下载路径下使用如下命令
```
wget https://gitee.com/backpackerxl/easy-jdbc/releases/v1.0/easyJDBC-1.0.0.jar
```
```
mvn install:install-file -DgroupId=cn.backpackerxl -DartifactId=easyJDBC -Dversion=1.0.0 -Dpackaging=jar -Dfile="easyJDBC-1.0.0.jar"
```
> easyJDBC经过不断的迭代,现在迎来了重大升级,现推出[`easyJDBC-0.1.3.jar`](https://gitee.com/backpackerxl/easy-jdbc/releases/v0.1.3), 此版本能够根据用户的实体表,自动创建数据库中对应字段类型的表。并且字段类型长度可控
> 而且只需要简单的配置就能实现这一功能。
```xml
cn.backpackerxl
easyJDBC
1.0.0
```
- 使用之前你应该要熟悉你的项目结构,学过jdbc的人都知道,为了数据的持久化,我们再连接数据库时是分了4层结构
- 分别是 `service -> service.impl -> dao -> dao.impl` 现在你可以告别这种模式了,因为最后两层EasyJDBC已经帮你做了,
- 只要你按规矩办事就事半功倍。下面就看看如何在项目中使用吧!
#### 实体类 [详情](src/test/java/cn/backpackerxl/entity/Admin.java)
```java
package cn.backpackerxl.entity;
import cn.backpackerxl.easyJDBC.annotation.*;
import lombok.*;
import java.util.Date;
/**
* @author: backpackerxl
* @create: 2021/12/23
* @filename: Admin
**/
@Table("t_admin")
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class Admin {
@Id
@Ignore //忽略此字段
private int id;
@Len("100")
private String name;
@MD5
private String passwd;
@DFormat(pattern = "timestamp") //将时间转化为时间戳
// @DFormat //按默认格式转化(yyyy-MM-dd HH:mm:ss)
// @DFormat(pattern = "HH:mm:ss") //按格式转化时间
private Date createTime;
}
```
#### service
```java
/**
* @author: backpackerxl
* @create: 2021/12/24
* @filename: AdminServiceImpl
**/
public interface AdminService {
int save(Admin admin);
int update(Admin admin);
int remove(int id);
Admin findById(int id);
List findAll();
Admin findByOneAndOther(String name, String passwd, String... fieldName);
List findByOneOrOther(String name, String passwd, String... fieldName);
PageBean pageEntityAll(int pageSize, int currentPage);
List search(String key, String filedName);
List findByOne(String one, String filedName);
PageBean search(String key, String filedName, int pageSize, int currentPage);
}
```
#### service.impl [详情](src/test/java/cn/backpackerxl/service/impl/AdminServiceImpl.java)
```java
import cn.backpackerxl.dao.AdminDao;
import cn.backpackerxl.easyJDBC.main.EasyJDBCRepository;
import cn.backpackerxl.easyJDBC.util.PageBean;
import cn.backpackerxl.entity.Admin;
import cn.backpackerxl.service.AdminService;
import java.util.List;
/**
* @author: backpackerxl
* @create: 2021/12/24
* @filename: AdminServiceImpl
**/
public class AdminServiceImpl implements AdminService {
private final AdminDao adminDao = (AdminDao) new EasyJDBCRepository(AdminDao.class).init();
@Override
public int save(Admin admin) {
return adminDao.save(admin);
}
@Override
public int update(Admin admin) {
return adminDao.update(admin);
}
@Override
public int remove(Long id) {
return adminDao.remove(id);
}
@Override
public Admin findById(Long id) {
return adminDao.findById(id);
}
@Override
public List findAll() {
return adminDao.findAll();
}
//...
}
```
#### dao
```java
import cn.backpackerxl.easyJDBC.main.EasyJDBCRef;
import cn.backpackerxl.entity.Admin;
public interface AdminDao extends EasyJDBCRef {
}
```
#### 使用 [详情](src/test/java/cn/backpackerxl/test/EasyJDBC.java)
```java
/**
* @author: backpackerxl
* @create: 2021/12/23
* @filename: EasyJDBC
**/
public class EasyJDBC {
/**
* 测试🔗
*
* @throws
*/
@Test
public void testConn() throws SQLException {
System.out.println(EasyJDBCUtil.getConnection());
}
/**
* 测试添加数据
*/
@Test
public void testSave() {
Admin admin = new Admin();
admin.setName("王五");
admin.setPasswd("147258");
admin.setCreateTime(new Date());
AdminService adminService = new AdminServiceImpl();
int save = adminService.save(admin);
System.out.println(save);
}
/**
* 测试修改数据
*/
@Test
public void testUpdate() {
Admin admin = new Admin(1, "李四", "945946", new Date());
AdminService adminService = new AdminServiceImpl();
int update = adminService.update(admin);
System.out.println(update);
}
/**
* 测试删除数据
*/
@Test
public void testRemove() {
AdminService adminService = new AdminServiceImpl();
int remove = adminService.remove(2);
System.out.println(remove);
}
/**
* 测试查询数据
*/
@Test
public void testFind() {
AdminService adminService = new AdminServiceImpl();
Admin admin = adminService.findById(1);
System.out.println(admin);
adminService.findAll();
List all = adminService.findAll();
for (Admin ad : all) {
System.out.println(ad.getName());
}
Admin other = adminService.findByOneAndOther("李四", code("94594", 32), "name", "passwd");
System.out.println(other);
System.out.println(adminService.findByOneOrOther("张三", code("945946", 32), "name", "passwd"));
}
}
```
#### 新增自定义查询和连接查询
> 这些功能只在[`easyJDBC-0.1.3.jar`](https://gitee.com/backpackerxl/easy-jdbc/releases/v0.1.3)中才包含
- 分数实体表 [`详情`](src/test/java/cn/backpackerxl/entity/Source.java)
```java
import lombok.*;
/**
* @author: backpackerxl
* @create: 2021/12/29
* @filename: Source
**/
@Table("t_source")
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class Source {
@Primary
private int id;
private String name;
private int hadoop;
private int hive;
private int javaWeb;
}
```
- 学生实体表 [`详情`](src/test/java/cn/backpackerxl/entity/Student.java)
```java
import lombok.*;
/**
* @author: backpackerxl
* @create: 2021/12/29
* @filename: Student
**/
@Table("t_student")
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class Student {
@Primary
private int id;
private String name;
private int sex;
private int age;
private String hobey;
private Date createTime;
}
```
- 复合实体表 [`详情`](src/test/java/cn/backpackerxl/pojo/StudentSource.java)
```java
import lombok.*;
/**
* @author: backpackerxl
* @create: 2021/12/29
* @filename: StudentSource
**/
//复合类型实体表没有对应表名
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class StudentSource {
private String name;
private int sex;
private int age;
private int hadoop;
private int hive;
private int javaWeb;
private String hobey;
private Date createTime;
}
```
- service
```java
/**
* @author: backpackerxl
* @create: 2021/12/29
* @filename: StudentService
**/
public interface StudentService {
List findStudentLeftSource();
List findStudentLeftSourceByName(Object... name);
List findByQuery(Object... obj);
}
```
- serviceImpl
```java
import cn.backpackerxl.model.Student;
import cn.backpackerxl.server.StudentService;
import cn.backpackerxl.repo.StudentDao;
import cn.backpackerxl.easyJDBC.main.EasyJDBCRepository;
import java.util.List;
/**
* @Author: backpackerxl
* CreateTime: 2022/10/17
* FileName: StudentServiceImpl
**/
public class StudentServiceImpl implements StudentService {
private final StudentDao studentdao = (StudentDao) new EasyJDBCRepository(StudentDao.class).init();
@Override
public int add(Student student) {
return studentdao.save(student);
}
@Override
public int edit(Student student) {
return studentdao.update(student);
}
@Override
public int delete(Long id) {
return studentdao.remove(id);
}
@Override
public Student selectById(Long id) {
return studentdao.findById(id);
}
@Override
public List selectAll() {
return studentdao.findAll();
}
}
```
#### dao
```java
import cn.backpackerxl.easyJDBC.main.EasyJDBCRefPlus;
import cn.backpackerxl.entity.Student;
import cn.backpackerxl.pojo.StudentSource;
public interface StudentDao extends EasyJDBCRefPlus {
}
```
- 测试
```java
/**
* @author: backpackerxl
* @create: 2021/12/23
* @filename: EasyJDBC
**/
public class EasyJDBC {
/**
* 测试连接查询
*/
@Test
public void testJoin() {
StudentService service = new StudentServiceImpl();
System.out.println(service.findStudentLeftSource());
List list = service.findStudentLeftSourceByName("胡洋");
for (StudentSource studentSource : list) {
System.out.println(studentSource.getName());
System.out.println(studentSource.getHadoop());
System.out.println(studentSource.getHive());
System.out.println(studentSource.getJavaWeb());
}
}
@Test
public void testJoinType() {
StudentService service = new StudentServiceImpl();
String name = "胡洋";
List list = service.findStudentLeftSourceByName(name);
for (StudentSource studentSource : list) {
System.out.println(studentSource.getName());
System.out.println(studentSource.getHadoop());
System.out.println(studentSource.getHive());
System.out.println(studentSource.getJavaWeb());
}
}
/**
* 测试连接查询
*/
@Test
public void testQuery() {
StudentService service = new StudentServiceImpl();
String name = "胡洋";
int sex = 1;
System.out.println(service.findByQuery(name, sex));
}
}
```
- JSON化对象使用方式
```java
import cn.backpackerxl.easyJDBC.util.JSON;
public class TestJson {
@Test
public void testTeacher() {
Teacher teacher = new Teacher();
teacher.setName(null);
teacher.setClassTime((short) 77);
teacher.setFlag(false);
teacher.setInformation("ggg1 !!!");
teacher.setSex('v');
String json = JSON.stringify(teacher);
System.out.println(json);
Teacher teacher1 = JSON.setValid(new Teacher()).parseValue(json);
System.out.println(teacher1);
}
@Test
public void packJSON() {
Comment comment = new Comment(1L, null, "hi", new Date(), 0L);
Comment comment1 = new Comment(2L, "jack", "hello", new Date(), 0L);
Comment comment2 = new Comment(3L, "alice", "ok", new Date(), 0L);
Comment comment3 = new Comment(4L, "peter", "i know", new Date(), 0L);
List comments = new ArrayList<>();
List comments2 = new ArrayList<>();
List comments3 = new ArrayList<>();
comments.add(comment1);
comments.add(comment2);
comments.add(comment3);
System.out.println(JSON.stringify(comment));
System.out.println(JSON.stringify(comments));
comments2.add(comment3);
comments3.add(comment2);
CommentPacking commentPacking = new CommentPacking(1, 4001L, null, 'a', 5L, true, null, null);
CommentPacking commentPacking1 = new CommentPacking(2, 4002L, null, 'b', 5L, true, comment1, comments2);
CommentPacking commentPacking2 = new CommentPacking(3, 4003L, "king2", 'c', 5L, false, comment2, comments3);
List comments4 = new ArrayList<>();
comments4.add(commentPacking);
comments4.add(commentPacking1);
comments4.add(commentPacking2);
System.out.println(JSON.stringify(commentPacking));
System.out.println(JSON.stringify(comments4));
}
@Test
public void jsonToData() {
String json = "[{\"id\":2,\"name\":\"jack\",\"context\":\"hello\",\"create_time\":1651158133623,\"replay_id\":0},{\"id\":3,\"name\":\"alice\",\"context\":\"ok\",\"create_time\":1651158133623,\"replay_id\":0},{\"id\":4,\"name\":\"peter\",\"context\":\"i know\",\"create_time\":1651158133623,\"replay_id\":0}]";
String json1 = "{\"id\":1,\"name\":\"tom\",\"context\":null,\"create_time\":1651158133623,\"replay_id\":0}";
Comment comment = JSON.setValid(new Comment()).parseValue(json1);
System.out.println(comment);
List comments = JSON.setValid(new Comment()).parseAll(json);
System.out.println(comments);
}
}
```
#### JSON新增解析器, 解析功能更强大
```java
public class TableTest {
@Test
public void testParse() {
String json = "{\"name\":[\"tom\",\"jack\",\"alice\"],\"ak\":[1, 5, 8, 9, 6, 3],\"db\":[78.98, 8945.68],\"ig\":[{\"name\":\"hy\",\"pd\":\"123\"},{\"name\":\"dk\",\"pd\":\"123\"}]}";
Map objValue = JSON.parse(json).getObjValue();
for (JSONObject name : objValue.get("name").getArrays()) {
System.out.println(name.getStrValue());
}
System.out.println("======================");
for (JSONObject ak : objValue.get("ak").getArrays()) {
System.out.println(ak.getIntValue());
}
}
@Test
public void ObjectToJSON() {
Use use = new Use();
String[] names = {"tom", "jack", "alice"};
int[] ints = {1, 5, 8, 9, 6, 3};
Double[] db = {78.98, 8945.68};
IG[] igs = new IG[]{new IG("hy", "123"), new IG("dk", "123")};
Map igMap = new HashMap<>();
Map igString = new HashMap<>();
List l = new ArrayList<>();
l.add("dk");
l.add("yzh");
l.add("hy");
igMap.put("001", new IG("dk", "789"));
igString.put("access", true);
igString.put("login", true);
igString.put("register", false);
use.setTag("User");
use.setName(names);
use.setAk(ints);
use.setDb(db);
use.setIg(igs);
use.setMapIg(igMap);
use.setMapObj(igString);
use.setStringList(l);
use.setSex('男');
use.setAge((short) 25);
use.setHappy(true);
List list = new ArrayList<>();
List booleans = new ArrayList<>();
list.add(new IG("gg", "kk"));
list.add(new IG("hh", "bb"));
list.add(new IG("rr", "cv"));
booleans.add(true);
booleans.add(false);
booleans.add(true);
use.setUseList(list);
use.setBooleans(booleans);
Map re = new HashMap<>();
re.put("name", "hy");
re.put("age", "34");
re.put("hobey", "game!!");
use.setMapStr(re);
System.out.println(JSON.stringify(use));
}
@Test
public void testParseValue() {
String json = "{\"tag\":\"User\",\"sex\":\"男\",\"is_happy\":true,\"age\":25,\"name\":[\"tom\",\"jack\",\"alice\"],\"ak\":[1, 5, 8, 9, 6, 3],\"db\":[78.98, 8945.68],\"ig\":[{\"name\":\"hy\",\"pd\":\"123\"},{\"name\":\"dk\",\"pd\":\"123\"}],\"map_obj\":[{\"access\":true},{\"login\":true},{\"register\":false}],\"map_str\":[{\"hobey\":\"game!!\"},{\"name\":\"hy\"},{\"age\":\"34\"}],\"map_ig\":[{\"001\":{\"name\":\"dk\",\"pd\":\"789\"}}],\"string_list\":[\"dk\",\"yzh\",\"hy\"],\"use_list\":[{\"name\":\"gg\",\"pd\":\"kk\"},{\"name\":\"hh\",\"pd\":\"bb\"},{\"name\":\"rr\",\"pd\":\"cv\"}],\"booleans\":[true,false,true]}";
Use use = JSON.setValid(Use.class).parseValue(json);
System.out.println(use);
}
}
```
> 示例代码中用到的实体 均可在项目源代码中找到出处
#### 更多内容 [`>>`](src/test/java/)