Mybatisマルチペアおよびその中のJsonに対する処理(調べ)
5700 ワード
映画情報管理では、1つの映画が複数の映画タイプに対応し、その後、1つの映画タイプが複数の映画に対応するため、このemmmmmは多対多段結合をもたらす.
まずクエリーについて話し、表示します.
まず、エンティティークラスを参照してください.
対応するデータテーブル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 | |
+------------+---------+------+-----+---------+----------------+
コントロールレイヤで検索
まずクエリーについて話し、表示します.
まず、エンティティークラスを参照してください.
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
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マルチペアマルチクエリーが しました