/**
* Created by davidshion 2/9/20/6:27 PM
* 相当于以前的dao接口
*
* @Author davidshi
*/publicinterfaceUserMapper{
User findUserById(int id);
List<User>findUserByMult(User user);
List<User>findUserByMult1(User user);
List<User>findUserByIds(List<Integer> ids);
List<User>findUserByIds1(QueryVo queryVo);
User findUserAndOrderByUserId(int id);
User findUserAndOrderAndOrderDetailByUserId(int id);}
4,Mapper的具体实现UserMapper.xml
<?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" ><!--这个地方必须是对应的接口的权限定名称--><mappernamespace="person.david.mybatis.mapper.UserMapper"><!--
id必须和接口中对应方法的名字一样
parameterType 必须和方法的参数一致
resultType必须和方法的返回值一致
--><selectid="findUserById"parameterType="int"resultType="person.david.mybatis.pojo.User">
select * from tb_user where id =#{id}
</select><!--<insert id="insertUser" parameterType="person.david.mybatis.pojo.User">--><!--INSERT INTO tb_user (username,password,email,gender,flag,role,code) VALUES (#{username},#{password},#{email},#{gender},#{flag},#{role},#{code})--><!--</insert>--><!----><!----><!--<select id="findUserByNameAndGender" parameterType="person.david.mybatis.pojo.User" resultType="person.david.mybatis.pojo.User">--><!--select * from tb_user where username like '%${username}%' and gender=#{gender}--><!--</select>--><!--<select id="findUserByNameAndGender1" parameterType="person.david.mybatis.vo.QueryVo" resultType="person.david.mybatis.pojo.User">--><!----><!--select * from tb_user where username like '%${user.username}%' and gender=#{gender} limit(#{pianyi},10)--><!----><!--</select>--><!--查询数据的时候,会有多个条件
但是这些条件会出现可能会有,可能没有的情况
select * from xxx where a=xxx and b =xxx and c =xxx
不允许出现where 1=1 因为这会导致数据库索引失效
<where> 会自动去掉第一个符合条件的and
--><!--
声明一个sql语句,此语句可以被复用 使用方式在使用的地方通过include id= sql id
--><sqlid="getall">
SELECT id, username, password, email, gender, flag, role, code from tb_user
</sql><selectid="findUserByMult"resultType="person.david.mybatis.pojo.User">
SELECT id, username, password, email, gender, flag, role, code from tb_user
<where><iftest="username!=null and username !=''">
and username=#{username}
</if><iftest="email!=null and email !=''">
and email=#{email}
</if></where></select><!--
include
导入一条已经声明好的sql语句
--><selectid="findUserByMult1"resultType="person.david.mybatis.pojo.User"><includerefid="getall"/><where><iftest="username!=null and username !=''">
and username=#{username}
</if><iftest="email!=null and email !=''">
and email=#{email}
</if></where></select><!--
两个问题, 集合如何获取
集合如何遍历
collection 代表要遍历的存放参数的集合
item 每次遍历后的参数存放的位置
open 遍历之前添加什么内容
close 遍历完成之后添加什么
separator 分隔符 ,每次遍历之后添加分隔符,但是最后一次遍历不添加
--><selectid="findUserByIds"parameterType="arraylist"resultType="person.david.mybatis.pojo.User">
select * from tb_user
<where><iftest="list !=null"><foreachcollection="list"item="id"open="id in ("close=")"separator=",">
#{id}
</foreach></if></where></select><selectid="findUserByIds1"parameterType="person.david.mybatis.vo.QueryVo"resultType="person.david.mybatis.pojo.User">
select * from tb_user
<where><iftest="ids !=null"><foreachcollection="ids"item="id"open="id in ("close=")"separator=",">
#{id}
</foreach></if></where></select><resultMapid="basemap"type="person.david.mybatis.pojo.User"><idcolumn="uid"property="id"></id><resultcolumn="username"property="username"/><resultcolumn="password"property="password"/></resultMap><!--
一对多的关系
collection 在user对象中 oders集合的属性名, 也就多的一方在少的一方中的属性名
ofType 集合的泛型
--><resultMapid="userorderresultmap"type="person.david.mybatis.pojo.User"extends="basemap"><!--<id column="uid" property="id"></id>--><!--<result column="username" property="username"/>--><!--<result column="password" property="password"/>--><collectionproperty="orders"ofType="person.david.mybatis.pojo.Order"><idcolumn="id"property="id"></id><resultcolumn="money"property="money"/><resultcolumn="status"property="status"/></collection></resultMap><selectid="findUserAndOrderByUserId"resultMap="userorderresultmap">
select u.id uid , u.username, u.password,o.id,o.money,o.status from tb_user u ,tb_order o where u.id=o.uid and u.id =#{id}
</select><resultMapid="userorderdetailresultmap"type="person.david.mybatis.pojo.User"extends="basemap"><!--<id column="uid" property="id"></id>--><!--<result column="username" property="username"/>--><!--<result column="password" property="password"/>--><collectionproperty="orders"ofType="person.david.mybatis.pojo.Order"><idcolumn="id"property="id"></id><resultcolumn="money"property="money"/><resultcolumn="status"property="status"/><collectionproperty="orderdetailList"ofType="person.david.mybatis.pojo.Orderdetail"><idcolumn="odid"property="id"></id><resultcolumn="num"property="num"></result><resultcolumn="money"property="money"></result></collection></collection></resultMap><selectid="findUserAndOrderAndOrderDetailByUserId"resultMap="userorderdetailresultmap">
select u.id uid , u.username, u.password,o.id,o.money,o.status ,od.id odid, od.num,od.money from tb_user u ,tb_order o ,tb_orderdetail od where u.id=o.uid and o.id=od.Oid and u.id =#{id}
</select></mapper>