MyBatis基于代理模式开发

本文详细介绍了MyBatis中代理模式的开发注意事项,包括Mapper映射的命名规则、namespace设置、sql id与方法名的对应。同时,讨论了参数传递的各种情况,如单个参数、多个参数以及使用Map进行传递的方法。对于模糊查询和主键自增回填也给出了示例。通过具体的代码片段展示了如何在接口和XML映射文件中进行配置。
摘要由CSDN通过智能技术生成

代理模式开发的注意事项

1、Mapper映射的名字必须和接口的名字保持一致,扩展名不算

2、Maper映射文件的namespace必须是接口的全路径名。 例:com.jdl.mapper.EmpMapper

3、sql语句的id必须和抽象方法的名一致

4、DeptMapper映射文件应该和接口编译之后放在同一个目录下

参数传递问题

单个参数作为方法参数

单个基本数据类型作为方法参数
#{}中可以随便写,遵循见名知意
 <select id="findByEmpno" resultType="emp" >
        select * from emp where empno =#{empno}
 </select>

多个参数作为方法参数

多个基本数据类型作为方法参数
 List<Emp> findByDeptnoAndSal(@Param("detpno") int deptno,@Param("sal") double sal);
 方式1 arg*     arg0 arg1 arg2 数字是索引,从0开始
 方式2 param*   param1 param2 param3 数字是编号,从1开始
 使用别名
 List<Emp> findByDeptnoAndSal(@Param("detpno") int deptno,@Param("sal") double sal);
 通过@Param注解使用别名之后,就不能再使用arg* 但是可以继续使用param*
<select id="findByDeptnoAndSal" resultType="emp">
        <!--select * from emp where deptno =#{arg0} and sal >= #{arg1}-->
        <!-- select * from emp where deptno =#{param1} and sal >= #{param2}-->
        select * from emp where deptno =#{deptno} and sal >= #{sal}
</select>

参数为map,#{键的名字}

单个引用类型,#{对象的属性名}

模糊查询

/**  接口的抽象方法
 * 根据名字做模糊查询
 * @param name 模糊查询的文字
 * @return  Emp对象List集合
 */
List<Emp> findByEname( String name);
<!--xml配置文件里的实现方法-->
<!--List<Emp> getByName(String name);-->
<select id="findByEname"  resultType="emp" >
    select * from emp where ename like concat('%',#{name},'%')
</select>

主键自增回填

//接口
public interface DeptMapper {
    int addDept(Dept dept);
    int addDept2(Dept dept);
}
   <!-- int addDept(Dept dept);
   useGeneratedKeys="true" 返回数据库帮我们生成的主键
   keyProperty="deptno" 生成的主键值用我们dept对象那个属性存储
   -->
    <insert id="addDept" parameterType="dept" useGeneratedKeys="true" keyProperty="deptno">
        insert into dept values(null,#{dname},#{loc})
    </insert>

既要低头拉车,也要抬头看路
谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值