mybatis mapper标签



多表连接


<?
xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"> -<mapper namespace="com.gem.demo.mapper.ProductMapper"> -<resultMap id="ProductMap" type="Product"> <id property="id" column="id"/> <!-- 主键字段 --> <result property="pname" column="pname"/> <!-- 普通字段 --> <result property="pimg" column="pimg"/> <result property="price" column="price"/> <result property="info" column="info"/> <result property="ptype" column="ptype"/> <!-- 1端 --> -<association property="type" javaType="ProductType"> <id property="id" column="typeid"/> <result property="typename" column="typename"/> </association> </resultMap> -<select id="findAll" resultMap="ProductMap"> <!-- 多表连接查询 --> select t1.*,t2.id typeid,t2.typename from product t1 left join producttype t2 on t1.ptype=t2.id </select> </mapper>

多表连接,一对多

<?
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"> <mapper namespace="com.gem.demo.mapper.ProductTypeMapper"> <resultMap type="ProductType" id="ProductTypeMap"> <id column="typeid" property="id"/> <result column="typename" property="typename"/> <!-- 一对多 --> <collection property="products" ofType="Product"> <id column="id" property="id"/> <result column="pname" property="pname"/> <result column="pimg" property="pimg"/> <result column="price" property="price"/> <result column="info" property="info"/> <result column="ptype" property="ptype"/> </collection> </resultMap> <select id="findAll" resultMap="ProductTypeMap"> <!--1对多查询 --> select t1.id typeid,t1.typename,t2.* from producttype t1 left join product t2 on t1.id=t2.ptype </select> </mapper>

 

</mapper>



 

 

 

懒加载


<?
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"> <mapper namespace="com.gem.demo.mapper.ProductMapper"> <resultMap type="Product" id="ProductMap"> <id column="id" property="id"/><!-- 主键字段 --> <!-- 普通字段 column :查询结果中的字段名 property:实体中的属性名--> <result column="pname" property="pname"/> <result column="pimg" property="pimg"/> <result column="price" property="price"/> <result column="info" property="info"/> <result column="ptype" property="ptype"/> <!-- 懒加载 --> <association property="type" javaType="ProductType" select="com.gem.demo.mapper.ProductTypeMapper.selectById" column="ptype"></association> </resultMap> <select id="findAll" resultMap="ProductMap"> select * from product </select> </mapper>

 

 

 

#{}、${}的用法,动态sql

<?
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:Mapper(DAO)接口的全路径 --> <mapper namespace="com.gem.demo.mapper.ProductMapper"> <!--id: 同一个namespace下id唯一 接口中的方法名 resultType:查询结果映射的实体类的全类名 在mybatis的核心配置文件中定义别名 映射为别名 --> <select id="findAll" resultType="Product"> select * from product </select> <!-- parameterType:参数类型 sql语句中 #{}设置参数 底层 jdbc psmt 预编译 ? "%"?"%" ptype=? ${} 字符串值直接拼接 没有? #{} ${}区别 --> <select id="selectBytype" resultType="Product" parameterType="int"> select * from product where ptype=#{ptype} </select> <!-- 模糊查询 select * from product where pname like '%${value}%' select * from product where pname like "%"#{name}"%" select * from product where pname like "%"#{value}"%" select * from product where pname like concat("%",#{name},"%") select * from product where pname like concat("%","${value}","%") concat:字符串拼接函数(mysql) --> <select id="selectByName" resultType="Product" > select * from product where pname like concat("%",'${value}',"%") </select> <select id="getToal" resultType="int" > select count(id) from product </select> <!-- 动态sql --> <!-- <select id="selectByNameAndType" resultType="Product"> select * from product where 1=1 <if test="pname!=null and pname !=''" > and pname like "%"#{pname}"%" </if> <if test="ptype!=null and ptype!=0"> and ptype=#{ptype} </if> </select> --> <!-- sql片段 --> <sql id="defaultQueryProduct"> select * from product </sql> <select id="selectByNameAndType" resultType="Product"> <!-- 引用sql片段 --> <include refid="defaultQueryProduct"></include> <where> <if test="pname!=null and pname !=''" > and pname like "%"#{pname}"%" </if> <if test="ptype!=null and ptype!=0"> and ptype=#{ptype} </if> </where> </select> <!-- 分类1或者分类3的数据 ptype in(1,3) foreach:遍历 list set map array select * from product where ptype in(?,?) foreach: 用于in查询 属性:collection 集合类型 list... item:集合元素 index:元素的索引 open:遍历集合之前的部分 close:遍历集合之后的部分 separator:元素之间的分割符 --> <select id="selectBytypes" resultType="Product"> <include refid="defaultQueryProduct"></include> <where> <foreach collection="list" item="type" open="ptype in (" separator="," close=")"> #{type} </foreach> </where> </select> </mapper>

 

posted @ 2020-09-22 14:25  不期而遇u  阅读(115)  评论(0编辑  收藏  举报