play教程 第八课 Model的用法 play中的JPA

9 篇文章 1 订阅
9 篇文章 10 订阅

-Model层介绍

Model是MVC架构中的又一重量级概念,前文中我们已经讲过了Controller和View,接下来就讲一下这个Model。
Model层的作用这里再简单说一下。和其他框架一样,model层主要是用来做数据模型的,另外有几点特别要提一下

  • 实体类中的属性需要public修饰
  • 实体类不需要写get/set方法
  • 通常我们会在实体类中写数据库操作方法,也就是传统框架中的dao层

举个栗子:

@Entity
public class Address extends Model{
     public String address;
     public String telephone;
     public Long userid;
     public String name;
     public boolean del;
     public Long cardid;
     /**
      * 查看收货地址是否已存在
      * @param name
      * @param address
      * @return
      */
     public static boolean findByCondition(String name,String address){
            int rows = Address. find("del=? and name=? and address=?", false,name,address).fetch().size();
            if( rows>0){
                 return true;
           } else{
                 return false;
           }
     }
     /**
      * 根据 userid查询
      * @param userid
      * @return
      */
     public static List<Address> findByUserid(Long userid){
            return Address. find("del=? and userid=? order by id desc",false,userid).fetch();
     }
}

看到这里,一些老练的程序员会指出:“wrong!wrong!!wrong!!!我们不应该把属性设置成public,应该是private,这样才符合java的封装特性。”好吧,既然你想到了,那么Play肯定也想到了,事实上,play在后台是为这些属性做过处理的,已经处理成了private,并且为我们生成了set/get方法。为什么要这么做呢?原因只有一个,play在想尽一切办法帮我们提高开发效率,这种无聊的工作交给框架后台处理,我们应该专注做一些有价值的逻辑开发。

-启用数据库

在play中用“启用”这两个字比较贴切,因为他不需要什么加载驱动、创建链接之类的繁琐步骤,只需要在/conf/application.conf文件中配置一下就可以,而且这里的配置非常简单。下面我们介绍两种启用数据库的方法,均已mysql为例。

–第一种方法
# db=mem

# To connect to a local MySQL5 database, use:
# db=mysql://user:pwd@host/database

在application.conf文件中找到这样几行,把粗体的两行去掉“#”,然后在第二行写上我们自己使用的数据库信息
举个栗子

db=mem
# To connect to a local MySQL5 database, use:
db=mysql://root:123456@host/hellodb
–第二种方法
# If you need a full JDBC configuration use the following :
# db.url=jdbc:postgresql:database_name
# db.driver=org.postgresql.Driver
# db.user=root
# db.pass=secret

在application.conf文件中找到这样几行,把粗体的几行去掉“#”,同样,根据自己的实际情况,修改配置信息.
举个栗子

db.url=jdbc:mysql://localhost/hellodb
db.driver=com.mysql.jdbc.Driver
db.user=root
db.pass=123456

-JPA的使用

JPA全称the Java Persistence API,也就是对数据库进行操作的数据模型实体类操作,是play中的一大利器,又帮我们减少了许多臃肿的代码。
正如本文第一个例子中那样,play中的实体类要继承Model类,并且要有@Entity注释。play中的JPA给我们带来多大的便利呢?

//增
user.save();
//删
user.delete();
//改
user.email = “new@emailaddress.com”;
user.save();
//查
User user = User.findById(1L);
//查列表
List<User> users = User.find(“admin = ?”, “true”).fetch();

怎么样,是不是很奇妙,很简单?It’s so easy.
再举个栗子。

    /**
      * 添加地址
      * @param address
      * @param telephone
      * @param name
      * @param userid
      */
     public static void add(String address,String telephone,String name,Long userid){
           Address addr = new Address();
            addr. address = address;
            addr. telephone = telephone;
            addr. name = name;
            addr. cardid = getCardid();
            int flag = 0;
            if(!Address. findByCondition(name, address)){
                 flag = 1;
           }
            addr.save();
           JSONArray result = JSONArray. fromObject(flag);
            renderJSON(result);
     }
     /**
      * 根据用户ID查出地址信息
      * @param userid
      */
     public static void show(Long userid){
           List<Address> addresses = Address.findByCardid(getCardid());
           Map<String,Object> resultMap = convertToMap(addresses);
            renderJSON(resultMap);
     }
     /**
      * 删除收货地址
      * @param addrid
      */
     public static void del(Long addrid,Long userid){
           Address addr = Address. findById(addrid);
            addr. del = true;
            addr.save();
     }

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值