# 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 */ List> findMapList(Consumer> consumer); ``` ### findList ### ```java /** * 通过主键批量获取 * @param ids * @return */ List findList(Id...ids); /** * 通过主键批量获取 * @param ids * @return */ List findList(List ids); /** * 分页查询 * @param pageNo * @param pageSize * @param consumer lambda Query对象 * @return */ List findList(Integer pageNo,Integer pageSize,Consumer> consumer); /** * 分页查询 * @param pageNo * @param pageSize * @return */ List findList(Integer pageNo,Integer pageSize); /** * 分页查询 * @param pageNo * @param pageSize * @param enClass 返回实体对象的Class * @param consumer lambda Query对象 * @return */ List findList(Integer pageNo,Integer pageSize,Class enClass,Consumer> consumer); /** * 返回列表数据 * @param consumer lambda Query对象 * @return */ List fndList(Consumer> consumer); /** * 返回列表数据 * @param enClass 实体对象的class * @param consumer lambda Query对象 * @return */ List findList(Class enClass,Consumer> consumer); ``` ### findAll ### ```java /** * 获取所有数据 * @return */ List findAll(); ``` ### findUnique ### ```java /** * 返回唯一数据 * @param typeClass * @param query * @return */ T findUnique(Class typeClass,Consumer> consumer); ``` ### findUniqueList ### ```java /** * 返回唯一的列表数据 * @param typeClass * @param consumer * @return */ List findUniqueList(Class typeClass,Consumer> consumer); ``` ### findToDouble ### ```java /** * 返回单个 Double 对象 * @param consumer * @return */ Integer findToDouble(Consumer> consumer); ``` ### findToInteger ### ```java /** * 返回单个 Integer 对象 * @param consumer * @return */ Integer findToInteger(Consumer> consumer); ``` ### findToLong ### ```java /** * 返回单个 Long 对象 * @param consumer * @return */ Long findToLong(Consumer> consumer); ``` ### findToString ### ```java /** * 返回单个 String 对象 * @param consumer * @return */ String findToString(Consumer> consumer); ``` ### findStringList ### ```java /** * 返回 List * @param consumer * @return */ List findStringList(Consumer> consumer); ``` ```java /** * findCount * @param query * @return */ Integer findCount(Consumer> consumer); /** * 返回 List * @param consumer * @return */ List findIntegerList(Consumer> consumer); /** * 返回 List * @param consumer * @return */ List findLongList(Consumer> consumer); /** * 返回 List * @param consumer * @return */ List findDoubleList(Consumer> consumer); /** * 分页查询 * @param pageNo * @param pageSize * @param consumer * @return */ Page findPage(Integer pageNo,Integer pageSize,Consumer> consumer); /** * 分页查询 * @param pageNo * @param pageSize * @return */ Page findPage(Integer pageNo,Integer pageSize); /** * 分页查询 * @param pageNo * @param pageSize * @param entityClass * @param consumer * @return */ Page findPage(Integer pageNo,Integer pageSize,Class entityClass,Consumer> consumer); ``` ### 其他操作 ```java /** * 添加或者更新 * @param model * @return 主键id */ Id saveOrUpdate(M model); /** * 执行存储过程 * @param call * @param callableStatementConsumer * @param resultSetFun * @return */ T call(String call,Consumer callableStatementConsumer,Function resultSetFun); /** * 执行sql 操作 * @param sql * @param params * @return 受影响行数 */ int execute(String sql,Object...params); /** * 执行查询 * @param sql * @param fun * @param params * @return */ List executeQuery(String sql,Function fun,Object...params); ``` # Query 对象 条件构造器 ```java /** * AND */ Query and(); /** * AND condition ({sql }) * @param sql * @param tableClass * @param consumer */ Query and(String condition, Class tableClass, Consumer> consumer); /** * AND condition ? * @param condition * @param params */ Query and(String condition, Object...params); /** * AND field = ? * @param field * @param value */ Query andEq(String field, Object value); /** * AND field > ? * @param field * @param value */ Query andGt(String field, Object value); /** * field > ? * @param field * @param value */ Query gt(String field, Object value); /** * field >= ? * @param field * @param value */ Query ge(String field,Object value); /** * AND field IN (?,?,?) values * @param field * @param values */ Query andIn(String field, Object[] values); /** * AND (conditions) * @param consumer */ Query and(Consumer> consumer); /** * AND LIKE ? * @param field * @param value */ Query andLike(String field, Object value); /** * LIKE ? * @param field * @param value */ Query like(String field,Object value); /** * AND field < ? * @param field * @param value */ Query andLt(String field, Object value); /** * field < ? * @param field * @param value */ Query lt(String field,Object value); /** * field <= ? * @param field * @param value */ Query le(String field,Object value); /** * exists ({sqlstr}) * @param sqlstr sql语句 * @param params 参数 */ Query exists(String sqlstr,Object...params); /** * exists * @param query */ Query exists(Query query); /** * exists * @param tableClass * @param consumer */ Query exists(Class tableClass,Consumer> consumer ); /** * NOT */ Query not(); /** * AND field NOT IN (?,?,?) * @param field * @param values */ Query andNotIn(String field, Object...values); /** * field not in (?,?,?) * @param field * @param values */ Query notIn(String field,Object...values); /** * field = ? * @param field * @param value */ Query eq(String field, Object value); /** * field != ? * @param field * @param value */ Query ne(String field,Object value); /** * and field != ? * @param field * @param value */ Query andNe(String field,Object value); /** * GROUP BY {group} */ Query group(String group); /** * id = ? * @param value * @return */ Query idEq(Object value); /** * field IN (?,?) * @param field * @param values * @return */ Query in(String field, Object...values) /** * field IN () * @param field * @param tableClass * @param consumer * @return */ Query in(String field,Class tableClass,Consumer> consumer) Query in(String field,Query query); Query andIn(String field,Class tableClass,Consumer> query); Query innerjoin(Class table, String condition); Query innerjoin(String table, String condition); Query leftjoin(String conditions); Query leftjoin(Class tableClass, String condition); Query leftjoin(Class tableClass,String asStr,String condition); Query leftjoin(String table, String condition); Query leftjoin(String table,String asStr,String condition); Query on(String condition); /** * Limit 默认分页 * @param pageNo * @param pageSize * @return */ Query limit(int pageNo, int pageSize); /** * order by * @param orderBy * @return */ Query order(String orderBy); Query rightjoin(Class table, String condition); Query rightjoin(String table, String condition); Query join(Class...tableClass); Query join(String...tables); /** * 查询的字段 * @param fields * @return */ Query select(List fields); /** * 查询的字段 * @param field * @return */ Query select(String field); /** * 需要查询的字段 * @param fields */ Query select(String...fields); /** * 查询 * @param alias 别名 * @param fields 字段名称 */ Query select(String alias,List fields); /** * 不需要查询的列名 * @param fields */ Query selectExcludes(String...fields); /** * 更新的字段 * @param fields */ Query set(Map fields); /** * 更新字段 * @param t */ Query set(T t); /** * 更新的字段 * @param field * @param value */ Query set(String field, Object value); /** * 更新字段 ex (set age = (age + ?) ) .. 1 * @param field * @param sql * @param params */ Query setSQLStr(String field,String sql,Object...params); /** * 批量更新或者新增的数据 * @param batch */ Query batch(List> batch); /** * Table AS alias * @param alias */ Query alias(String alias); /** * 构建一个空的 where */ Query where(); /** * where * @param condition * @param params * @return */ Query where(String condition, Object...params); Query where(String condition,Class tableClass,Consumer> where); /** * where map * @param whereMap */ Query where(Map whereMap); /** * id in (?,?,?) * @param ids 主键id */ Query idIn(Object...ids); Query idIn(Class tableClass,Consumer> query); Query between(String field,Object start,Object end); Query andBetween(String field,Object start,Object end); Query isNull(String field); Query isNotNull(String field); Query andIsNotNull(String field); Query andIsNull(String field); Query andThen(boolean eq,Consumer> query); Query andNotEmptyThen(Object value,Consumer> query); Query cache(); Query cache(String key,long second); Query cache(String key); Query cache(long second); Query having(String having); Query count(String count); Query or(String orStr); Query or(Consumer> query); ```