@JFinal 你好,想跟你请教个问题:
直接看代码吧,为了方便我将业务方法『根据手机号注册』放在Customer类中
public class Customer extends Model<Customer> { public static final Customer dao = new Customer(); public static final String ID = "id"; public static final String USERNAME = "username"; public static final String FULLNAME = "fullname"; public static final String PASSWORD = "password"; public static final String SALT = "salt"; public static final String MOBILE = "mobile"; public static final String EMAIL = "email"; public static final String IS_ACTIVE = "is_active"; public static final String CREATE_BY = "create_by"; public static final String CREATE_DATE = "create_date"; public static final String LAST_UPDATE_BY = "last_update_by"; public static final String LAST_UPDATE_DATE = "last_update_date"; public static final String IS_DELETE = "is_delete"; //根据手机号注册 public void registByMobile(String mobile, String password) { //。。。无关代码。。。 new Customer().dao. set(Customer.USERNAME, username). set(Customer.MOBILE, mobile). set(Customer.PASSWORD, encodPwd). set(Customer.SALT, fakeSalt). set(Customer.IS_ACTIVE, "Y"). set(Customer.CREATE_BY, 0). set(Customer.CREATE_DATE, DateUtil.getNow()). set(Customer.LAST_UPDATE_BY, 0). set(Customer.LAST_UPDATE_DATE, DateUtil.getNow()). set(Customer.IS_DELETE, "N"). save(); } }
//进行注册 Customer.dao.registByMobile(mobile, password);
com.jfinal.plugin.activerecord.ActiveRecordException: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '11' for key 'PRIMARY'
dao对象是全局共享的,只能用于查询,不能承载数据,所以将以上有dao的代码删掉dao即可:newCustomer().dao.set(...)改成: newCustomer().set(...)。 Customer.dao.registByMobile(mobile,password);改成new Customer().registByMobile(mobile,password);
jfinal手册上有红色字体明确说明过这个问题,在此下载手册: http://www.jfinal.com
谢谢啊大大你又快又棒拿到首期款就给你赞助model这个写法真不好。
先说写起来的工作量,model.set(XModel.FieldName,value);
谁知道会重复多少遍呢,如果换成model.setFieldName这样子,至少IDE会为你省事。
谁知道这个字段的具体数据类型呢?Model.set(Stringkey,Objectvalue),你又说要去看数据库文档或者model里面的注释?系统稍微复杂的时候,也不方便。
我总结modelget/set写法有两种:
一个是在model中声明属性,比如:
publicclassUserextendsModel<User>{publicstaticfinalUserdao=newUser();////////////////////////////attributes////////////////////////////privateintid;//primarykeyprivateStringname;//用户名privateStringtelphone;//手机//如下代码使用IDE快速产生,如果表字段不一致,仅仅修改get或set的key名称!/////////////////////////getterandsetter/////////////////////////publicintgetId(){returnget("Id");}publicUsersetId(intid){set("Id",id);}//....还有更多}版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。