Mybatisマルチペアおよびその中のJsonに対する処理(調べ)

5700 ワード

映画情報管理では、1つの映画が複数の映画タイプに対応し、その後、1つの映画タイプが複数の映画に対応するため、このemmmmmは多対多段結合をもたらす.
まずクエリーについて話し、表示します.
まず、エンティティークラスを参照してください.
public class Film 
{
	private Integer id;				//   
	private String name;			//     
	private String englishName;		//     
	private String cover;			//     
	private Integer duration;		//     (  :  )
	private Integer box;			//   
	private Float score;			//     
	private String resume;			//     
	private int isHot;				//     
	private int clickHit;			//     
	private Date publishDate;		//     
	
	private Employee employee;			//   
	private List filmTypes;	//     
	private List employees;	//   (  )
	private List pictures;		//   
	
	//      ,           
	private List performs;
	...//  getset  
}
public class FilmType 
{
	private Integer id;			//   
	private String typeName;	//     
	private List films;	//     
}

対応するデータテーブルt_filmとt_filmtype構造は、
t_film
+-------------+--------------+------+-----+---------+----------------+| Field       | Type         | Null | Key | Default | Extra          |+-------------+--------------+------+-----+---------+----------------+| id          | int(11)      | NO   | PRI | NULL    | auto_increment || name        | varchar(50)  | YES  |     | NULL    |                || englishName | varchar(50)  | YES  |     | NULL    |                || cover       | varchar(100) | YES  |     | NULL    |                || duration    | int(11)      | YES  |     | NULL    |                || box         | int(11)      | YES  |     | NULL    |                || score       | float(11,1)  | YES  |     | NULL    |                || resume      | text         | YES  |     | NULL    |                || isHot       | int(11)      | YES  |     | NULL    |                || clickHit    | int(11)      | YES  |     | NULL    |                || employeeId  | int(11)      | YES  |     | NULL    |                || publishDate | datetime     | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
+----------+--------------+------+-----+---------+----------------+| Field    | Type         | Null | Key | Default | Extra          |+----------+--------------+------+-----+---------+----------------+| id       | int(11)      | NO   | PRI | NULL    | auto_increment || typeName | varchar(255) | YES  |     | NULL    |                |+----------+--------------+------+-----+---------+----------------+
操作を容易にするために、データベースに中間テーブルt_が確立されているfilm_filmtype、その構造は以下の通りです.
+------------+---------+------+-----+---------+----------------+| Field           | Type    | Null | Key | Default | Extra                  |+------------+---------+------+-----+---------+----------------+| id               | int(11)  | NO   | PRI | NULL    | auto_increment || filmId         | int(11)  | NO   |       | NULL    |                           || filmTypeId | int(11)  | NO   |       | NULL    |                           |
+------------+---------+------+-----+---------+----------------+
コントロールレイヤで検索
        @RequestMapping("/list")
	public String list(@RequestParam(value="page",required=false)String page,@RequestParam(value="rows",required=false)String rows,HttpServletResponse response) throws Exception
	{
		PageBean pageBean = new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
		Map map = new HashMap();
		map.put("start", pageBean.getStart());
		map.put("size", pageBean.getPageSize());
		Long total = filmService.count(map);
		List filmList = filmService.find(map);
		
		for(Film temp:filmList)
		{
			//              
			List filmTypes = temp.getFilmTypes();
			for(FilmType type:filmTypes)
			{
				type.setFilms(null);
			}
			temp.setFilmTypes(filmTypes);
			
			//              
			Employee employee = temp.getEmployee();
			employee.setFilms(null);
			temp.setEmployee(employee);
		}
		
		JSONObject result = new JSONObject();
		JsonConfig jsonConfig=new JsonConfig();
		jsonConfig.setExcludes(new String[] {"employees","pictures"});
		jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd"));
		JSONArray jsonArray = JSONArray.fromObject(filmList,jsonConfig);
		result.put("rows", jsonArray);
		result.put("total", total);
		ResponseUtil.write(response, result);
		return null;
	}

Film , mybatis , json 。 film filmtype film null。 film ( emloyee)。 mapper SQL


フロントエンドはeasyUIフレームワークで い,film を する は の りである.

			
				
				  
				    
				    
				    
				  
				    
			
		

を する に いられるjsメソッドは,バックグラウンドから られてきたデータをカンマで って する.
	function fromatFilmType(val,row)
	{
		var types = row.filmTypes;
		var result = "";
		for(var i=0;i

これでmybatisマルチペアマルチクエリーが しました