mybatis的接口绑定方法

目录

mybatis的接口绑定方法

1. XML方法的方法

1.1 创建接口文件

1.2 创建mapper.xml配置文件

1.3 配置映射路径

2. 注解形式

3. 输出映射

4. 多个接口参数


mybatis的接口绑定方法

mybatis实现了接口绑定,使用会更加方便,接口绑定:mybatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,就可以直接调用接口方法使用。

接口绑定方式:

  1. 通过注解绑定,直接在方法上面加上@Select ,@Update等注解,在注解里包含SQL绑定;
  2. 通过XML里面SQL绑定,需要在xml配置文件里的namespace必须指定接口的全限定名

1. XML方法的方法

1.1 创建接口文件

public interface StudentMapper {
    //通过id来查询某一个学生信息
    public Student selectStudentById(Integer id);
}

1.2 创建mapper.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">
<!--命令空间 一般指定对应的接口的全路径-->
<mapper namespace="com.jing.mapper.StudentMapper">
    <select id="selectStudentById" parameterType="int" resultType="student">
        select * from student where SID = #{id}
    </select>

1.3 配置映射路径

<!--映射文件引入-->
    <mappers>
        <!--resource方式: 指定单个映射文件-->
        <mapper resource="mapper/StudentMapper.xml"/>
    </mappers>

注意:编写mapper.java 接口和mapper.xml配置文件需要遵循一些开发规范,mybatis才能自动生成mapper接口的代理类对象

开发规范:

  1. 在mapper.xml配置文件中namespace等于接口的全路径;
  2. 使用的Statement的id属性值需要和接口中的方法名保持一致;
  3. 接口文件方法参数类型和mapper.xml文件中parameterType指定类型一致;
  4. 接口文件方法的返回值类型和mapper.xml中的resultType指定的类型一致。

2. 注解形式

注解方法SQL直接写在接口上。

优点:比较简单,效率更高一些

缺点:当SQL发生改变都需要重新编译代码

mybatis的注解中,基本注解@Select 、@Insert()、@Update、@Delete

@Insert

   @Options(useGeneratedKeys = true)//自增
    @Insert("insert into jing1(id,age) values(#{id},#{age})")
    int insertJing1(Annotation jing1);

在方法上直接添加@Insert注解,将sql语句直接写在注解中。如果在插入操作需要添加自增主键等操作时,需要使用@Options注解,该注解中包含useGeneratedKeys等操作。

和xml配置对比

 注意:自增时,前提在数据库必须要支持,设置允许自增操作。

@Select

   @Select("select * from jing1 where id = #{id}")
    Annotation selectJing1ById(Integer id);

查询操作使用select注解直接在注解内给定SQL语句,如果数据库字段和映射pojo类属性名一致,则如上使用。如果数据库字段和映射pojo类属性名不一致,也可以使用@results显性指定映射关系。

@Results注解对应XML中的ResultMap标签

@Result对应xml中的result标签(在result注解中后id=true表明id 属性是主键)

3. 输出映射

输出类型:resultType和resultMap

使用resultType,数据库的字段名和pojo类的属性名保持一致才能映射成功,如果字段名和属性名完全不一致,则不会创建出自定义对象。如果字段名和属性名部分一致,会创建出自定义对象,对相同的字段和属性会完成映射。

使用resultMap可以显性指定字段名和属性名的映射关系,不管输出是单个对象(selectOne)还是多个结果集(selectList),在mapper.xml中resultType或者resultMap的类型是一样的,不一样的是mapper.java 接口文件中返回值类型不一样。

输出的是单个自定义的对象,方法返回单个对象的类型;输出的是多个对象的结果集,方法的返回是List<Object>。

4. 多个接口参数

public int updateNameById(Integer id, String name);

img

如果直接在接口中传递多个参数时,在sql执行过程中会抛出以下错误:

img

注意:mybatis中多个参数时,mybatis有效的参数名只能是0,1,param1,param2等,才可以识别,当传递参数命名为其他的id或name时则不能识别,要么改成0,1等mybatis可识别的参数,但这样不方便代码查看,显然是无意义的。

解决办法:可以在传递的多个参数上添加注解@Param注解,mybatis就会自动封装成Map类型的数据,Param内的名称作为key,传递的数据作为值,在SQL执行过程中会通过入参来做解析

int updateNameById(@Param("id") Integer id,@Param("name") String name);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值