zoukankan      html  css  js  c++  java
  • MyBatis

    一:MyBatis自关联查询映射文件

    1.pojo类

    public class Category implements Serializable{
    	
    	private String cid;   //分类主键
    	private String cname;   //分类名
    	private Category parent;  //父分类,是根据pid的自连接对象,一个二级分类只有一个一级分类
    	private String desc;   //描述
    	private List<Category> children;  //子分类,一个一级分类可能有多个二级分类,而二级分类无子分类
    	
    	//setter and getter method...
    }
    

    2.dao接口

    public interface CategoryDao {
    		
    	public Category load(String cid) throws SQLException;
    	
    	public List<Category> findByParent(String pid) throws SQLException;
    	
    	public List<Category> findParent() throws SQLException;
    
    	public void add(Category category) throws SQLException;
    	
    	public void edit(Category category) throws SQLException;
    	
    	public int findChildrenByParent(String pid) throws SQLException;
    	
    	public void delete(String cid) throws SQLException;
    
    }
    

    3.Mapper映射文件(切记实体类里的toString方法里边去掉类型为List的属性,要不然打印时会出现死循环的)。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 
    注意:使用mapper代理方法开发,namespace有特殊重要的作用
    -->
    <mapper namespace="com.tyust.dao.CategoryDao">
    
      <resultMap id="CategoryResultMap" type="com.tyust.pojo.Category" >
       <id column="cid" property="cid" jdbcType="VARCHAR" />
       <result column="cname" property="cname" jdbcType="VARCHAR" />
       <result column="desc" property="desc" jdbcType="VARCHAR" />
       <!-- parent对象也是一个Category对象,该对象里只需设置其cid就行了,该cid也就是二级分类(子类)的pid -->
       <association column="pid" property="parent" javaType="com.tyust.pojo.Category">
       	<result column="pid" property="cid"/>
       </association>
       <collection column="cid" property="children" select="com.tyust.dao.CategoryDao.findByParent"/>
      </resultMap>
      
      <select id="load" parameterType="string" resultMap="CategoryResultMap">
      	select *
      	from 
      		t_category 
      	where 
      		cid=#{cid}
      </select>  
      
      <select id="findByParent" parameterType="string" resultMap="CategoryResultMap">
      	select *
      	from 
      		t_category 
      	where 
      		pid=#{cid} 
      	order by
      		orderBy
      </select>
      
      <select id="findParent" resultMap="CategoryResultMap">
      	select * 
      		from t_category 
      		where pid is null 
      		order by orderBy
      </select>
      
    </mapper>
  • 相关阅读:
    BS和CS的区别联系
    layui radio 根据获取的到值选中
    C++基础 学习笔记六:复合类型之数组
    C++基础 学习笔记五:重载之运算符重载
    C++基础 学习笔记四:重载之函数重载
    C++基础 学习笔记三:函数指针
    C++基础 学习笔记一:源代码的格式化
    本地git与github绑定并向GitHub上传本地仓库
    git安装
    20200202
  • 原文地址:https://www.cnblogs.com/CY001/p/7573185.html
Copyright © 2011-2022 走看看