# hibernate-plus **Repository Path**: xiaomaoguai/hibernate-plus ## Basic Information - **Project Name**: hibernate-plus - **Description**: Hibernate 增强工具包 - 只做增强不做改变,更加精简持久层CRUD操作 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 114 - **Created**: 2016-12-01 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![app-hibernate-persist-Logo](http://git.oschina.net/uploads/images/2016/1121/010747_31fb5e63_620321.jpeg "logo") > 为简化开发工作、提高生产率而生 # 简介 | Intro Hibernate 增强工具包 - 只做增强不做改变,更加精简持久层`CRUD`操作 # 优点 | Advantages - **纯正血统**:完全继承原生 `Hibernate` 的所有特性 - **最少依赖**:仅仅依赖 `Hibernate` - **自动生成代码**:简化操作,使其专注于业务 - **自定义操作**:提供大量API,使开发更加顺畅 - **简化操作**:只需专注于业务,查询操作请交给 `Hibernate-Plus` - **无缝分页**:基于`Hibernate`分页,无需具体实现 - **数据库友好**:基于`Hibernate`,支持目前大多数主流数据库 - **避免Sql注入**:内置对特殊字符转义,从根本上预防Sql注入攻击 - **无配置文件**:无需编写SQL配置文件(例如:`Mybatis`的XML),从而简化操作 - **主从分离**:简单配置即可实现主从分离 # 应用实例 | Demo [Spring-MVC](http://git.oschina.net/cancerGit/springmvc-hibernate-plus) # 结构目录 | Architecture ![项目结构说明](http://git.oschina.net/uploads/images/2016/1126/164418_9ce74358_620321.png "项目结构说明") # 通用方法 | API ![API说明](http://git.oschina.net/uploads/images/2016/1126/164243_7fc54d36_620321.png "API说明") #优点? > Hibernate-Plus都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法。 > > 让你感觉使用Hibernate感觉跟Mybatis-Plus一样,极大简化开发。 ##Hibernate-Plus - Spring集成 ${hibernate.dialect} ${hibernate.show_sql} ${hibernate.format_sql} ${hibernate.use_sql_comments} com.baomidou.hibernate.model.po ###DAO层 public interface DemoDao extends IDao { } @Repository public class DemoDaoImpl extends DaoImpl implements DemoDao { } ###Service层 public interface DemoService extends IService { } @Service public class DemoServiceImpl extends ServiceImpl implements DemoService { } ###实体类注解 @Entity @Table(name = "demo") @DynamicInsert(true) @DynamicUpdate(true) public class Tdemo extends AutoPrimaryKey { private String demo1; private String demo2; private String demo3; @Column(name = "demo1") public String getDemo1() { return demo1; } public void setDemo1(String demo1) { this.demo1 = demo1; } @Column(name = "demo2") public String getDemo2() { return demo2; } public void setDemo2(String demo2) { this.demo2 = demo2; } @Column(name = "demo3") public String getDemo3() { return demo3; } public void setDemo3(String demo3) { this.demo3 = demo3; } } ####注解支持 >完全支持 `JPA` 注解,原生 `Hibernate` 用法 ####强调 >不是表中字段的属性需要添加`@Transient`注解 ####示例项目 >http://git.oschina.net/cancerGit/springmvc-hibernate-plus ##Hibernate-Plus - 简单用法示例 全部针对单表操作,每个实体类都需要继承Convert来PO、TO之间的装换 示例代码: //查询表中所有数量 int count = demoService.selectCount(); //根据条件查询数量 Condition的链式风格使你的代码看起来更加优美 int count = demoService.selectCount(Condition.instance().eq("id",1)); //查询单条数据 Demo demo = demoService.selectOne(Condition.instance().eq("id",1)); List demos = demoService.selectOne(Condition.instance().gt("id",1).like("name","plus").in("sex","1,2,3")); //查询分页 Page demos = demoService.selectPage(new Page(1,10)); 下面是API自行感受 ... ###Service通用API public V get(Serializable id); public V get(String property, Object value); public V save(V vo); public void saveOrUpdate(V vo); public void update(V vo); public boolean update(Map setMap, Wrapper wrapper); public void delete(V vo); public boolean delete(Wrapper wrapper); public boolean insertBatch(List list); public boolean insertBatch(List list, int size); public boolean updateBatch(List list); public boolean updateBatch(List list, int size); public V selectOne(Wrapper wrapper); public List selectList(Wrapper wrapper); public List> selectMaps(Wrapper wrapper); public int selectCount(); public int selectCount(String property, Object... value); public int selectCount(String[] property, Object... value); public int selectCount(Map map); public int selectCount(Wrapper wrapper); public Page selectPage(Page page); public Page selectPage(Page page, String property, Object value); public Page selectPage(Wrapper wrapper, Page page); public Page> selectMapPage(Wrapper wrapper, Page> page); ###Dao通用API public T get(Serializable id); public T get(String property, Object value); protected T get(String hql); protected T get(String hql, Map params); public T save(T t); public void saveOrUpdate(T t); public void update(T t); public int update(Map setMap, Wrapper wrapper); public void delete(T t); public int delete(Wrapper wrapper); public boolean insertBatch(List list, int size); public boolean updateBatch(List list, int size); public List selectList(Wrapper wrapper); public List> selectMaps(Wrapper wrapper); public int selectCount(); public int selectCount(String property, Object... value); public int selectCount(String[] property, Object... value); public int selectCount(Map params); public int selectCount(Wrapper wrapper); public Page> selectMapPage(Wrapper wrapper, Page> page); public Page selectPage(Wrapper wrapper, Page page); public List query(String property, Object value); public List query(String[] property, Object... value); public List query(int page, int rows, String property, Object value); public List query(int page, int rows, String[] property, Object... value); public List query(String order, String property, Object value); public List query(String order, String[] property, Object... value); public List query(int page, int rows, String order, String property, Object value); public List query(int page, int rows, String order, String[] property, Object... value); public List query(String order); public List query(String order, int page, int rows); public List query(); public List query(int page, int rows); public List query(Map params); public List query(Map params, String order); public List query(int page, int rows, Map params, String order); public List query(int page, int rows, Map map); protected int executeHql(String hql); protected int executeHql(String hql, Map params); protected List queryListWithHql(String hql); protected List queryListWithHql(String hql, Map params); protected List queryListWithHql(String hql, Map params, int page, int rows); protected List queryListWithHql(String hql, int page, int rows); protected List> queryMapsWithHql(String hql); protected List> queryMapsWithHql(String hql, int page, int rows); protected int queryCountWithHql(String hql); protected int queryCountWithHql(String hql, Map params); protected int executeSqlUpdate(String sql); protected int executeSqlUpdate(String sql, Object[] args); protected int executeSqlUpdate(String sql, Map params); protected int queryCountWithSql(String sql); protected int queryCountWithSql(String sql, Map params); protected Map queryMapWithSql(String sql, Map params); protected Map queryMapWithSql(String sql); protected List> queryMapsWithSql(String sql, Object[] args); protected List> queryMapsWithSql(String sql); protected List> queryMapsWithSql(String sql, int page, int rows); protected List> queryMapsWithSql(String sql, Map params, int page, int rows) protected List> queryMapsWithSql(String sql, Map params); protected List queryListWithSql(String sql, Object[] args); protected List queryListWithSql(String sql); protected List queryListWithSql(String sql, int page, int rows); protected List queryListWithSql(String sql, Map params, int page, int rows); protected List queryListWithSql(String sql, Map params); protected Map queryMapWithSql(String sql, Object[] args); public List> queryMapsWithClass(String property, Object value); public List> queryMapsWithClass(String[] property, Object... value); public List> queryMapWithClass(Map map); # 其他开源项目 | Other Project `如果你喜欢Mybatis,可以尝试使用` - [Mybatis-Plus](http://git.oschina.net/baomidou/mybatis-plus) # 期望 | Futures > 欢迎提出更好的意见,帮助完善