1、在service.xml中,如果要在数据库中生成指定名称的表,则要在<entity>标签中添加一个新的属性table,table的值即为该表的名,否则表名为app_entity的name值。
column标签的类型为java的类型,而不是数据库的类型
2、build-Service创建过程中,可能会报因为内存不足,VM创建失败。
解决方法:关闭计算机的一些空闲应用,释放计算机内存。
3、tomcat服务开启后,部署后才开始建表,而不是build Service。如果没开服务,部署了也不建表。
//每次修改完<entity>中的内容,都要重新build和部署一次。
4、在工程中创建一个portlet,使用以下语句创建一个Book对象(创建的表的名字就是Book)
//在数据库的对应表中新增或更新一条数据。触发一次该方法,数据库中生成一条新数据。
Book book=BookLocalServiceUtil.createBook(CounterLocalServiceUtil.increment());
//生成的是一个长整形,保证在全局中是唯一的,由liferay维护
//下面就是setAttribute(省略),然后更新到数据库。
BookLocalServiceUtil.updateBook(book);
//可以通过Book对象或者bookId来删除数据库中的数据。代码如下所示:
BookLocalServiceUtil.deleteBook(book);
BookLocalServiceUtil.deleteBook(bookId);
//BookLocalServiceUtil这个类本身具有一些简单的增删改查方法。但是,复杂的方法需要自己手动创建。
5、简单查询:使用finder,查询结果为一个集合或单条记录,
首先,在service.xml中,在<entity>标签中创建标签<finder>
//上面的name值用来构建方法名,findBy+name值(固定写法)
public List<Book> findByName(long bookId) //这个方法需要在src的service.impl包的 BookLocalServiceImpl.java类中创建一个方法封装一下该方法。
在BookLocalServiceImpl.java类中,如下:
//方法封装完后要执行一下 buildService,将新写的方法添加到接口中。
//finder为创建一个索引,加快数据查询速度。
使用背景:从大量数据中取少量数据,简单的查询,使用finder
6、build Service的版本必须低于数据库中表记录的版本。
工程中版本在文件 service.properties 中查看。
数据库版本在表名为 servicecomponent 的表中查看。
工程中的版本必须必数据库中的版本大。否则工程发布时会报错。
7、groupId是站点ID,companyId是实例Id,用来区分不同的站点和实例
8、复杂查询(和finder没有关系):
column标签的类型为java的类型,而不是数据库的类型
2、build-Service创建过程中,可能会报因为内存不足,VM创建失败。
解决方法:关闭计算机的一些空闲应用,释放计算机内存。
3、tomcat服务开启后,部署后才开始建表,而不是build Service。如果没开服务,部署了也不建表。
//每次修改完<entity>中的内容,都要重新build和部署一次。
4、在工程中创建一个portlet,使用以下语句创建一个Book对象(创建的表的名字就是Book)
//在数据库的对应表中新增或更新一条数据。触发一次该方法,数据库中生成一条新数据。
Book book=BookLocalServiceUtil.createBook(CounterLocalServiceUtil.increment());
//生成的是一个长整形,保证在全局中是唯一的,由liferay维护
//下面就是setAttribute(省略),然后更新到数据库。
BookLocalServiceUtil.updateBook(book);
//可以通过Book对象或者bookId来删除数据库中的数据。代码如下所示:
BookLocalServiceUtil.deleteBook(book);
BookLocalServiceUtil.deleteBook(bookId);
//BookLocalServiceUtil这个类本身具有一些简单的增删改查方法。但是,复杂的方法需要自己手动创建。
5、简单查询:使用finder,查询结果为一个集合或单条记录,
首先,在service.xml中,在<entity>标签中创建标签<finder>
<finder name="Name" return-type="Collection"> //return-type="Collection"意思为返回的值为集合。
//如果为实体的名称,比如这里为Book,则返回的为单条记录。
<finder-column name="bookId" /> //name值必须为表中已经存在的字段
</finder>
//上面的name值用来构建方法名,findBy+name值(固定写法)
public List<Book> findByName(long bookId) //这个方法需要在src的service.impl包的 BookLocalServiceImpl.java类中创建一个方法封装一下该方法。
在BookLocalServiceImpl.java类中,如下:
public Book getBookByBookId(long bookId){
return bookPersistence.findByName(bookId);
}
//方法封装完后要执行一下 buildService,将新写的方法添加到接口中。
//finder为创建一个索引,加快数据查询速度。
使用背景:从大量数据中取少量数据,简单的查询,使用finder
6、build Service的版本必须低于数据库中表记录的版本。
工程中版本在文件 service.properties 中查看。
数据库版本在表名为 servicecomponent 的表中查看。
工程中的版本必须必数据库中的版本大。否则工程发布时会报错。
7、groupId是站点ID,companyId是实例Id,用来区分不同的站点和实例
8、复杂查询(和finder没有关系):
在BookLocalServiceImpl.java类中,如下:
public List<Book> searchBook(String name,long groupId){
//在当前类中,
DynamicQuery query=this.dynamicQuery(); //相当于SQL语句的 select * from book;
//在一个portlet或JSP页面上
DynamicQuery query=DynamicQueryFactoryUtil.forClass(Book.class);
//下面两句相当于SQL语句 select * from where groupId =22233 and bookName like
query.add(PropertyFactoryUtil.forName("groupId").eq(groupId));
query.add(PropertyFactoryUtil.forName("bookName").like("%"+name+"%"));
//排序(降序) query.addOrder(OrderFactoryUtil.desc("createDate"));
return dynamicQuery(query);
}