Ebean,是一个与mybatis、hibernate同类型的orm框架,但是却极为简洁、高效。
它不需要mybatis繁琐的配置,也不需要hibernate死板的标准 操作,但是却可以实现上述二者的效果。比如缓存技术、对象映射,甚至他们没有的功能,比如级联查询和操作。
项目概况:
开发工具: IDEA
MVC 框架:Spring MVC 5.3
构建:gradle
说明:在配置 ebean 之前,要确保 spring mvc 能正确运行!
第一步:配置 gradle,启用插件
plugins {
id 'java' // 项目默认配置
id 'io.ebean' version '12.15.1' // 增加一项,以便使用 ebean 增强
}
第二步:在 gradle 配置文件中添加依赖,ebean核心库
// 配置 ebean
implementation group: 'io.ebean', name: 'ebean', version: '12.16.3'
implementation 'io.ebean:ebean-querybean:12.16.3'
implementation 'io.ebean:ebean-ddl-generator:12.16.3'
// 配置 ebean 结束
第三步:在 gradle 配置文件中,配置使用 ebean 增强
ebean {
debugLevel = 1
}
以上三步完成后,你的 gradle 配置文件应该如下所示,其他配置项省略(如 Spring 的配置等):
plugins {
id 'java'
id 'io.ebean' version '12.15.1'
}
dependencies {
// 配置 ebean
implementation group: 'io.ebean', name: 'ebean', version: '12.16.3'
implementation 'io.ebean:ebean-querybean:12.16.3'
implementation 'io.ebean:ebean-ddl-generator:12.16.3'
// 配置 ebean 结束
// 其他依赖项
}
ebean {
debugLevel = 1
}
// 其他 gradle 配置
第四步:配置 spring-ebean.xml ,并确保该文件能被项目正确加载
<!-- mysql 的连接配置在 jdbc.properties 文件中,同样在 resources 文件夹下 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:jdbc.properties" system-properties-mode="OVERRIDE"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="jdbcUrl" value="${ds18.jdbc.url}"></property>
<property name="driverClass" value="${ds18.jdbc.driver}"></property>
<property name="user" value="${ds18.jdbc.username}"></property>
<property name="password" value="${ds18.jdbc.password}"></property>
</bean>
<!-- Ebean Server 配置 -->
<bean id="ebeanServer" class="io.ebean.DatabaseFactory" factory-method="create">
<constructor-arg>
<bean class="io.ebean.config.DatabaseConfig">
<property name="name" value="db" />
<property name="dataSource" ref="dataSource" />
</bean>
</constructor-arg>
</bean>
第五步:在 resources 路径下,新建 ebean.mf 文件。配置 ebean 的扫描路径,需要 ebean 自动化管理的实体类等,需要在这个目录下。
ebean.classes=com.eagsen.taovel.db.**
第六步:在上述配置的路径下,新建一个实体类 User ,用于测试。
@Entity
@Table(name = "user_base") // 与表名一致
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
int u_id;
String u_mobile;
String u_nick;
// set ,get 方法省略
}
第七步:在控制器方法中测试
// 测试 ebean insert
@GetMapping({"/ebean/insert"})
public String insertUser() {
try {
User user = new User();
user.setU_mobile("139****1884");
user.setU_nick("昵称");
dbFactory.save(user);
int id = user.getU_id(); // 自动生成的id
} catch (Exception e) {
int i;
e.printStackTrace();
}
return "test-croppie";
}
// 测试 ebean delete
@GetMapping({"/ebean/delete"})
public String deleteUser() {
try {
User user = new User();
user.setU_id(3);
boolean b = dbFactory.delete(user);
int id = 0;
} catch (Exception e) {
int i;
e.printStackTrace();
}
return "test-croppie";
}
// 测试 ebean update
@GetMapping({"/ebean/update"})
public String updateUser() {
try {
User user = new User();
user.setU_id(3);
user.setU_nick("不说脏话");
dbFactory.update(user);
int id = 0;
} catch (Exception e) {
int i;
e.printStackTrace();
}
return "test-croppie";
}
// 测试 ebean find
@GetMapping({"/ebean/find"})
public String findUser() {
try {
User user = new User();
user.setU_id(3);
List<User> users = dbFactory.find(User.class).where().eq("u_status",1).findList();
int id = 0;
} catch (Exception e) {
int i;
e.printStackTrace();
}
return "test-croppie";
}
第八步:安装 ebean 增强插件。这一步在某些 idea 版本中不是必须的,但是最好检查一下。
在 Setting 中,左侧导航到 plugins ,右侧搜索 ebean enhancer,安装!
结论:Ebean 是一个号称轻量级的 ORM 对象,但是可以做任何 Mybatis 做的事情,也可以做 Mybatis 做不了的事情。但是 Ebean 的中文资料极为稀缺,在国内是一个小众技术路线。