# jasmine-orm
**Repository Path**: jivesoft/jasmine-orm
## Basic Information
- **Project Name**: jasmine-orm
- **Description**: jasmine-orm 简化数据 操作 无 xml 支持 ActiveRecord 轻量级Java orm
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2019-07-16
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# jasmine-orm
# 特性
* **强大的 CRUD** 内置操作操作模板 可实现大部分的curd 操作
* **支持多种数据库** MySQL、MariaDB、Oracle、DB2,SQLSERVER2012 ,SQLite,H2
* **支持主键自动生成** 支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
* **支持 ActiveRecord 模式** 支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
* **无xml** 没有xml文件 无需扫描
* **快速启动**
* **内置分页**
* **内置缓存操作** HashMap ,J2ECache,Redis 等 可以自定义缓存
# 使用方式
#### 在springboot 中使用
```java
@Bean
public DbContext dbContext( class=""DataSource dataSource) {
return new DbContext(dataSource);
}
```
#### 在springmvc 中使用
```xml
```
# CRUD操作
#### 传统Dao 使用方式
```java
@Table
public class User{
private Integer id;
private Integer age;
private String name;
//省略get set
}
@Repository
public class UserRepository extends SpringJdbcTemplate{
}
//查询单个对象 select id,age,name from user where id = ? [100]
User user = userRepository.find(100);
//多个查询 select id,age,name from user where id in (?,?,?) [100,100]
List users = userRepository.findList(100,100);
//条件查询 select id,age,name from user where age > ? [18]
List users = userRepository.findList(1, 20, query->query.where().gt("age", 18));
//添加数据
Integer id = userRepository.save(new User(20, "李四"));
//批量添加数据
userRepository.save(Arrays.asList(
new User(20, "李四"),
new User(25, "张三"),
new User(20, "王五")
));
//删除
userRepository.delete(100);
//批量删除
userRepository.delete(100,101,102);
//更新
userRepository.update(user);
```
### ActiveRecord
```java
@Table
public class User extends ActiveRecord{
private Integer id;
private Integer age;
private String name;
//省略get set
}
```
### 直接使用
```java
@Autowired
private DbContext dbContext;
public void test() {
dbContext.table(User.class);
}
```
### 添加
```java
/**
* 批量添加
* @param models 插入的实体列表 所有的实体 字段个数 要保持一致
*/
void save(List models);
/**
* 添加
* @param model 实体对象
* @return 返回主键id
*/
Id save(M model);
/**
* 添加
* @param modelMap
* @return
*/
Id save(Map modelMap);
```
### 修改
```java
/**
*更新数据
*@param consumer lambda Query对象
*@return 受影响行数
*/
int update(Consumer> consumer);
/**
*批量更新数据
*@params models 所有实体字段个数保持一致
*/
void update(List models);
/**
*@params model 实体对象
*@return 受影响行数
*/
int update(M model);
/**
*@params model Map 对象
*@return 受影响行数
*/
int update(Map modelMap);
```
### 删除
```java
/**
* 条件删除
* @param consumer lambda Query对象
* @return 受影响行数
*/
int delete(Consumer> consumer);
/**
* 通过主键删除
* @param id
* @return 受影响行数
*/
int delete(Id id);
/**
* 批量删除
* @param ids
* @return 受影响行数
*/
int delete(Id...ids);
/**
* 批量删除
* @param ids
* @return 受影响行数
*/
int delete(List ids);
```
### 查询
* [find](#find)
* [findMap](#findMap)
* [findMapList](#findMapList)
* [findList](#findList)
* [findAll](#findAll)
* [findUnique](#findUnique)
* [findUniqueList](#findUniqueList)
* [findToDouble](#findToDouble)
* [findToInteger](#findToInteger)
* [findToLong](#findToLong)
* [findToString](#findToString)
* [findStringList](#findStringList)
* [findIntegerList](#findIntegerList)
* [findLongList](#findLongList)
* [findDoubleList](#findDoubleList)
### find ###
```java
/**
* 通过id获取
* @param id
* @return 实体对象
*/
M find(Id id);
/**
* 条件查询 返回实体对象
* @param consumer lambda Query对象
* @return
*/
M find(Consumer> consumer);
/**
* 条件查询 返回实体对象
* @param enClass 实体对象的class
* @param query consumer lambda Query对象
* @return
*/
En find(Class enClass,Consumer> consumer);
/**
* 根据Map 生成条件 key=? and key=?
* @param queryMap
* @return
*/
M find(Map queryMap);
```
### findMap ###
```java
/**
* 条件查询返回Map
* @param consumer lambda Query对象
* @return Map
*/
Map findMap(Consumer> consumer);
```
### findMapList ###
```java
/**
* 条件查询返回多个Map对象
* @param consumer lambda Query对象
* @return List