# sql-plus
**Repository Path**: qiaoyatao/sql-plus
## Basic Information
- **Project Name**: sql-plus
- **Description**: 锋利的sql (内置JdbcTemplate sql执行器,2.0之后采用mybatis内置执行器)
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 0
- **Created**: 2019-11-07
- **Last Updated**: 2025-09-01
## Categories & Tags
**Categories**: database-dev
**Tags**: None
## README
# sql_plus
### 1、介绍
锋利的sql
### 2、软件架构
原生sql实现增删改查功能,实体类继承Model,或者mappe继承AnnotationMapper,再者也可以通过SqlPuls2类也可实现操作数据库,与mybatis进行无缝整合,两种代码生成器
可根据生成代码规则,节约%80开发成本,开发只需关心书写业务逻辑,避免浪费精力书写与业务无关代码。节约你的开发周期,提高
效率。
### 3、安装教程
一、引入maven jar包
```
com.qiaoyatao
sql-plus
2.0.0-SNAPSHOT
```
创建配置类,引入以下配置
@Configuration
public class SqlSessionCF {
@Autowired
private JdbcTemplate jdbc;
@Autowired
private SqlSessionFactory sessionFactory;
@Bean
public SqlSession2 sqlSession2(){
return new SqlSession2(jdbc);
}
@Bean
public SqlSession3 sqlSession3(){
return new SqlSession3(sessionFactory);
}
@Bean
public SqlHelper sqlHelper(){
return new SqlHelper(sessionFactory);
}
}
### 4、 使用说明
1. 通过实体类对象创建sql表结构。
1、实体类对象、集成Model
```
@Data
public class Employee extends Model {
private Integer id;
private String name;
private String age;
private String gender;
private Long deptId;
private String address;
private Date createTime;
}
```
自动生成实体文件
```
DataSource source = new DataSource();
source.setUrl("jdbc:mysql://localhost:3306/tmc_info?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT");
source.setUsername("root");
source.setPassword("root");
source.setDriverName("com.mysql.cj.jdbc.Driver");
GlobalConfig global = new GlobalConfig();
global.setConnection(source.get());
global.setAuthor("乔小乔");
global.setOutputDir("./src/test/java/");//文件路径
global.setDatabase("tmc_info");//数据库
//global.setExclude(new String[]{"sys_airport","sys_airport_city"}); 排除表
//需要生成表(默认所有表)
//global.setInclude(new String[]{"sys_airport","sys_airport_city",
//"sys_tmc_office","sys_user_role"});
PackageConfig pc = new PackageConfig();
AutoGenerator generator = new AutoGenerator();
generator.setGlobal(global);
generator.setPc(pc);
generator.execute();
source.close();
```
2、执行创建表
```
Employee employee = new Employee();
employee.create();
```
3、运行结果发现数据库中创建了一个为employee的表。
```
CREATE TABLE `employee` (
`id` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`age` varchar(100) DEFAULT NULL,
`gender` varchar(100) DEFAULT NULL,
`dept_id` bigint(11) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`create_time` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
2. 插入数据
```
Employee employee = new Employee();
employee.setId(1);
employee.setName("乔小乔");
employee.setAddress("北京市昌平区生命科学园");
employee.setAge("10");
employee.setDeptId(1l);
employee.setCreateTime(new Date());
//1、单个新增
employee.insert();
```
3. 批量插入
```
List list = new ArrayList<>();
for (int i = 1; i <=10 ; i++) {
Employee employee = new Employee();
employee.setId(i);
employee.setName("乔小乔");
employee.setAddress("北京市昌平区生命科学园");
employee.setAge("10");
employee.setDeptId(1l);
employee.setCreateTime(new Date());
list.add(employee);
}
Employee.insertList(list);//2、批量新增
```
4. 多表插入
```
SysAccount account = new SysAccount();
account.setPhone("15510304125");
account.setUserName("乔小乔");
Employee employee = new Employee();
employee.setId(1);
employee.setName("乔小乔");
employee.setAddress("北京市昌平区生命科学园");
employee.setAge("27");
employee.setDeptId(1l);
employee.setCreateTime(new Date());
Employee.insertList(account,employee);//不同类型插入
```
5. 参数id查询
```
//1、参数id
Employee one = new Employee().selectByid(1);
```
6. 实体字段id查询
```
//2、实体字段id查询
Employee employee = new Employee();
employee.setId(2);
Employee newEmployee = employee.selectByid();
```
7. 参数id删除
```
//参数id删除
int i = new Employee().deleteById(1);
```
8. 实体字段id删除
```
//实体字段id删除
Employee employee = new Employee();
employee.setId(2);
employee.deleteById();
```
9. 参数id更新
```
//1、参数id更新
Employee employee = new Employee();
employee.setCreateTime(new Date());
employee.setName("王梦妍");
employee.setAge("20");
employee.setGender("女");
employee.setCreateTime(new Date());
employee.setAddress("哈尔滨市");
employee.updateById(1);
```
10. 字段id更新
```
//实体字段id更新
Employee employee = new Employee();
employee.setId(1);
employee.setName("乔小乔");
employee.setAddress("北京市昌平区生命科学园");
employee.updateById();
```
11. 参数list查询
```
Employee employee = new Employee();
employee.setName("乔小乔");
employee.setAddress("北京市昌平区生命科学园");
List list = employee.selectList();
```
12. 参数count查询
```
Employee employee1 = new Employee();
employee1.setName("乔小乔");
employee1.setAddress("北京市昌平区生命科学园");
Long i = employee1.count();
```
13. 分页查询
```
Employee employee = new Employee();
employee.setId(1);
employee.setName("乔小乔");
PageInfo info = employee.selectPage(new Page(1, 10));
```
14. 关键词删除(and)
```
Employee employee = new Employee();
employee.setId(1);
employee.setName("乔小乔");
employee.delete();
```
15. QueryModel删除 and 、or
```
QueryModel QueryModel = new QueryModel();
QueryModel.eq("name","乔小乔");
QueryModel.or("id",1);
int delete = new Employee().delete(QueryModel);
```
16. QueryModel map删除
```
QueryModel QueryModel = new QueryModel();
Map params = new HashMap<>();
params.put("id",1);
params.put("name","乔小乔");
QueryModel.allEq(params);
int delete = new Employee().delete(QueryModel);
```
17. QueryModel查询 and 、or
```
QueryModel QueryModel = new QueryModel();
```
18. QueryModel list 查询
```
QueryModel QueryModel = new QueryModel();
QueryModel.eq("name","乔小乔");
QueryModel.or("id",1);
List list = new Employee().selectList(QueryModel);
```
19. QueryModel 更新
```
QueryModel QueryModel = new QueryModel();
QueryModel.eq("name","乔小乔");
QueryModel.or("id",1);
int update = new Employee().update(QueryModel);
```
20. QueryModel map更新
```
QueryModel QueryModel = new QueryModel();
Map params = new HashMap<>();
params.put("id",1);
params.put("name","乔小乔");
QueryModel.allEq(params);
int update = new Employee().update(QueryModel)
```
21. QueryModel 片段sql
```
QueryModel QueryModel = new QueryModel();
Object [] params={1,"乔小乔"};
String sql=" `id` =# AND `name` =#";
//1、数组类型
QueryModel.judge(sql,params);
//2、可变类型
QueryModel.judge(sql,1,"乔小乔");
//3、对象类型
Employee e = new Employee();
e.setId(1);
e.setName("老王");
QueryModel.judge(sql,e);
//1、查询一条
Employee employee = new Employee().selectOne(QueryModel);
//2、查询列表
List list = new Employee().selectList(QueryModel);
//3、条件更新
int update = new Employee().update(QueryModel);
//4、条件删除
int delete = new Employee().delete(QueryModel);
```
1. 22、QueryModel 全量sql
17. ```
QueryModel QueryModel = new QueryModel(); //*号默认会替换成字段,可以查询具体字段,切记不可as
String sql="SELECT * FROM `employee` WHERE `id` = # AND `name` =#";
//1、数组类型
Object [] params={1,"乔小乔"};
QueryModel.qL(sql,params);
//2、可变类型
QueryModel.qL(sql,1,"乔小乔");
//3、对象类型
Employee e = new Employee();
e.setId(1);
e.setName("老王");
QueryModel QueryModel1 = new QueryModel();
QueryModel1.qL(sql,e);
//1、查询一条
Employee employee = new Employee().selectOne(QueryModel1);
//2、查询列表
List list = new Employee().selectList(QueryModel);
//3、条件更新
int update = new Employee().update(QueryModel);
//4、条件删除
int delete = new Employee().delete(QueryModel);
```
5、 参与贡献
Author:乔小乔( 乔小乔)
Date: 2019年11月
描述: 作为一名开发如果你的业务比较复杂,表字段过多那么可能书写sql语句是你做为浪费时间与精力的,大量重复sql语句会滞缓你的开发效率,因此借助插件或者工具是提供代码书写效率的最好途径,也是你代码简洁性,健壮性不可缺少的关键,作为一名程序员书写代码不是为了实现功能而去书写代码,有时候需要考虑很多,比如代码健壮性,可读性,简洁性,可复用性,好的程序员写出的代码就想一件艺术品,让人爱不释手。 编写此插件的目的为了提高开发效率,用最少的代码实现最复杂的功能,进而提高开发效率。