有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord

酋长思密达 发布于 2013/12/06 15:58
阅读 3K+
收藏 3

 有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord?

在使用JFinal中时,如果业务是和计算相关的时候,弱对象类型的Model就有些不合适了,一个好的思路是使用类似MyBaties的方式,将表映射到对象,这个对象和JFinal的Model不同的时属性是写好的。

以下是问题补充:

@酋长思密达:@JFinal (2013/12/06 15:58)
加载中
2
酋长思密达
酋长思密达
我想了想,JFinal能集成Spring而Spring能集成MyBaties,我直接用他们应该就行,从数据源开始就托管给Spring,这样应该可以,晚上试试
一路找北
jfinal这个框架精髓就是简洁轻便极速开发。甩掉一大堆累赘的配置文件和各种框架。你这样做不是不可以,不过jfinal也仅仅是用来做个controller层而已。又回到以前ssh或者ssi的方式上来了。jfinal相当于struts或者struts2的作用。这样的话,不如直接用springmvc来做controller层,那个也不可谓不强大,而且和各种五花八门的框架集成的都非常好。
0
Rezeroer
Rezeroer
  弱对象类型跟 bean比起来 就是字段名字不好记吧
0
JFinal
JFinal
建议尝试 ActiveRecord 用上三天,你会果断抛弃 MyBaties
0
石头哥哥
石头哥哥
用自己熟悉的
0
酋长思密达
酋长思密达
ActiveRecord在使用对象.属性的时候不代码提示,还得找属性名称,这点感觉比较麻烦
0
缪斯的情人
缪斯的情人

引用来自“李小热”的答案

ActiveRecord在使用对象.属性的时候不代码提示,还得找属性名称,这点感觉比较麻烦
这样做只想说:呵呵
0
玛雅牛
玛雅牛

使用代码生成技术,我是使用htll模板来定义要生成的model,然后读取数据库信息,这样就类型安全了。自定义查询时,必须使用Department.KEY_DEP_NAME而不允许使用“dep_name”就能避免很多问题。

/**
 *
 * Copyright (C) 2013 陕西威尔伯乐信息技术有限公司
 *
 * @className:Department
 * @description:部门信息实体类
 * 
 * @version:v1.0.0 
 * @author:玛雅牛
 * 
 * Modification History:
 * Date            Author       Version      Description
 * -----------------------------------------------------------------
 * 2013年12月10日      玛雅牛                      v1.0.0        create
 *
 */
package com.wellbole.eqms.model;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.jfinal.plugin.activerecord.Model;

/**
 * 部门信息
 **/
public class Department extends Model<Department> {

	/**
	 * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
	 */
	private static final long serialVersionUID = -488605965596072905L;

	public static Department dao = new Department();

	/**
	 * id
	 */
	public static final String KEY_ID = "id";
	/**
	 * dep_name
	 */
	public static final String KEY_DEP_NAME = "dep_name";
	/**
	 * in_quake
	 */
	public static final String KEY_IN_QUAKE = "in_quake";
	/**
	 * cnt
	 */
	public static final String KEY_CNT = "cnt";
	/**
	 * parentid
	 */
	public static final String KEY_PARENTID = "parentid";

	/**
	 * 设定 id
	 * @param id id
	 */
	public Department setId( Integer id){
		return set(KEY_ID, id);
	}

	/**
	 * 获取 id
	 * @return id
	 */
	public Integer getId(){
		return getInt(KEY_ID);
	}

	/**
	 * 设定 dep_name
	 * @param depName dep_name
	 */
	public Department setDepName( String depName){
		return set(KEY_DEP_NAME, depName);
	}

	/**
	 * 获取 dep_name
	 * @return dep_name
	 */
	public String getDepName(){
		return getStr(KEY_DEP_NAME);
	}

	/**
	 * 设定 in_quake
	 * @param inQuake in_quake
	 */
	public Department setInQuake( String inQuake){
		return set(KEY_IN_QUAKE, inQuake);
	}

	/**
	 * 获取 in_quake
	 * @return in_quake
	 */
	public String getInQuake(){
		return getStr(KEY_IN_QUAKE);
	}

	/**
	 * 设定 cnt
	 * @param cnt cnt
	 */
	public Department setCnt( Integer cnt){
		return set(KEY_CNT, cnt);
	}

	/**
	 * 获取 cnt
	 * @return cnt
	 */
	public Integer getCnt(){
		return getInt(KEY_CNT);
	}

	/**
	 * 设定 parentid
	 * @param parentid parentid
	 */
	public Department setParentid( Integer parentid){
		return set(KEY_PARENTID, parentid);
	}

	/**
	 * 获取 parentid
	 * @return parentid
	 */
	public Integer getParentid(){
		return getInt(KEY_PARENTID);
	}


	public List<Department> findByExample(Department department){
		Map<String, Object> conds= new HashMap <String, Object>();
		//如果设定了 id
		if(department.getId()!=null){
			conds.put(KEY_ID, department.getId());
		}
		//如果设定了 dep_name
		if(department.getDepName()!=null && department.getDepName().length() > 0){
			conds.put(KEY_DEP_NAME, department.getDepName());
		}
		//如果设定了 in_quake
		if(department.getInQuake()!=null && department.getInQuake().length() > 0){
			conds.put(KEY_IN_QUAKE, department.getInQuake());
		}
		//如果设定了 cnt
		if(department.getCnt()!=null){
			conds.put(KEY_CNT, department.getCnt());
		}
		//如果设定了 parentid
		if(department.getParentid()!=null){
			conds.put(KEY_PARENTID, department.getParentid());
		}
		return dao.search(conds, "");
	}

	public Department findFristByExample(Department department){
		List<Department> mList = findByExample(department);
		return mList!=null && mList.size()>0 ? mList.get(0):null;
	}
}



酋长思密达
酋长思密达
感谢,这种方法很靠谱
0
a
aarreess

private BoundSql getBoundSql(String sqlId,Map<String,Object> para)
 {
  String tmpSqlId=Para.mybatisNameSpace.concat(".").concat(sqlId);
  return Para.ssf.getConfiguration().getMappedStatement(tmpSqlId).getBoundSql(para);
 }
 
 
 
 public List<Record> getSqlData(String sqlId,Map<String,Object> para)
 {
  BoundSql boundSql=this.getBoundSql(sqlId, para);;
  String sql=boundSql.getSql();
  log.info(sql);
  List<ParameterMapping> al=boundSql.getParameterMappings();
  Object sqlPara[]=new Object[al.size()];
  for(int i=0;i<al.size();i++)
  {
   ParameterMapping pm=al.get(i);
   String parameterName=pm.getProperty();
   sqlPara[i]=para.get(parameterName);
   log.info(sqlPara[i]);
  }
  return Db.find(sql,sqlPara);
 }

0
a
aarreess
 InputStream inputStream = Resources.getResourceAsStream(resource);
   Para.ssf = new SqlSessionFactoryBuilder().build(inputStream);
0
Solr_
Solr_
请参考这个,http://blog.jarjar.cn/jfinal-merge-mybatis/ jfinal集成原生mybatis的
返回顶部
顶部