# hibernate-plus
**Repository Path**: baomidou/hibernate-plus
## Basic Information
- **Project Name**: hibernate-plus
- **Description**: Hibernate 增强工具包 - 只做增强不做改变,更加精简持久层CRUD操作
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 300
- **Forks**: 115
- **Created**: 2016-11-22
- **Last Updated**: 2025-03-03
## Categories & Tags
**Categories**: database-dev
**Tags**: None
## README

> 为简化开发工作、提高生产率而生
# 简介 | Intro
Hibernate 增强工具包 - 只做增强不做改变,更加精简持久层`CRUD`操作
> 技术讨论 QQ 群 492238239 如满,加群 121472998 [(有钱的捧个钱场【点击捐赠】, 没钱的捧个人场)](http://git.oschina.net/uploads/images/2015/1222/211207_0acab44e_12260.png)
# 优点 | Advantages
- **纯正血统**:完全继承原生 `Hibernate` 的所有特性
- **最少依赖**:仅仅依赖 `Hibernate`
- **自动生成代码**:简化操作,使其专注于业务
- **自定义操作**:提供大量API,使开发更加顺畅
- **简化操作**:只需专注于业务,数据库操作请交给 `Hibernate-Plus`
- **无缝分页**:基于`Hibernate`分页,无需具体实现
- **数据库友好**:基于`Hibernate`,支持目前大多数主流数据库
- **避免Sql注入**:内置对特殊字符转义,从根本上预防Sql注入攻击
- **无配置文件**:无需编写SQL配置文件(例如:`Mybatis`的XML),从而简化操作
- **主从分离**:简单配置即可实现主从分离
# 应用实例 | Demo
[Spring-MVC](http://git.oschina.net/baomidou/springmvc-hibernate-plus)
[Spring-Boot](http://git.oschina.net/cancerGit/springboot-hibernateplus-gradle)
# 下载地址 | Download
[点此去下载](http://search.maven.org/#artifactdetails%7Ccom.baomidou%7Chibernate-plus%7C1.0.0.Final%7Cjar)
```xml
com.baomidou
hibernate-plus
1.0.0.Final
```
# 通用方法 | 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
${hibernate.dialect}
${hibernate.show_sql}
${hibernate.format_sql}
${hibernate.use_sql_comments}
com.baomidou.hibernate.model.po
##Hibernate-Plus - SpringBoot集成
查看[Spring-Boot](http://git.oschina.net/cancerGit/springboot-hibernateplus-gradle)
###DAO层
/*Dao接口类*/
public interface DemoDao extends IDao {
}
/*Dao接口实现类*/
public class DemoDaoImpl extends DaoImpl implements DemoDao {
}
###Service层
/*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/baomidou/springmvc-hibernate-plus
##Hibernate-Plus - 简单用法示例
全部针对单表操作,每个实体类都需要继承Convert来PO、TO之间的装换
示例代码:
List lists = new ArrayList();
for (int i = 0; i <= 100; i++) {
Vdemo vdemo = new Vdemo();
vdemo.setDemo1(i + "");
vdemo.setDemo2(i + "");
vdemo.setDemo3(i + "");
lists.add(vdemo);
}
// 批量插入
boolean insertBatch = demoService.insertBatch(lists);
System.out.println(insertBatch);
// Condition 链式查询列表
List vdemoList = demoService.selectList(SelectWrapper.instance().le("id", 10));
System.out.println(vdemoList);
Map map = new HashMap<>();
map.put("id", 99L);
// 根据Condition 查询单条记录
Vdemo vdemo = demoService.selectOne(SelectWrapper.instance().eq("id", 10));
System.out.println(vdemo);
List