运用mybatis中的约定

168 阅读2分钟

上篇发布是mybatis中CRUD的方法实现,今天发布的是mybatis中的动态代理模式

  • 动态代理模式的原则:约定优于配置
  • 约定的目标:省略掉statement,即根据约定直接可以定位出SQL语句
  • 实现动态代理模式就是新建一个接口,但不是随便建一个接口,而是有约定的!
    1. 方法名和mapper.xml文件中标签的id值相同
    2. 方法的输入参数和mapper.xml文件中标签的parameterType类型一致(如果没有parameterType就说明没有输入参数)
    3. 方法的返回值和mapper.xml文件中标签的resultType类型一致(如果没有resultType就说明没有返回值就写void)

需要注意的一点:除了以上约定,要实现接口中的方法和mapper.xml中SQL标签一一对应还需要一点就是 namespace的值就是接口的全类名

下面代码

接口

 public interface personMapper {

    Person queryPersonById(int id);

    List<Person> queryAllPerson();

    void addPerson(Person person);

    void deletePersonById(int id);

    void updatePersonById(Person person);
}

测试类

public class test {
    public  static  void queryPersonById() throws IOException {
        //加载mybatis配置文件(为了访问数据库)
        Reader reader = Resources.getResourceAsReader("conf.xml");
        //主要是导入mybatis配置文件
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlSessionFactory.openSession();
        //映射接口
        personMapper personMapper = session.getMapper(personMapper.class);
        //通过接口调用方法
        Person person = personMapper.queryPersonById(2);
        System.out.println(person);
        session.close();
    }
     public static void main(String[] args) throws IOException {
        queryPersonById();
    }
}

mybatis配置文件

<configuration>
    <!--环境配置,连接的数据库-->
    <environments default="development">
        <environment id="development">
            <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
            <transactionManager type="JDBC"></transactionManager>
            <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
            <dataSource type="POOLED">
                <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
                <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=User"></property>
                <property name="username" value="simple"></property>
                <property name="password" value="123456"></property>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--告诉mybatis映射sql语句的路径(注册映射文件)-->
        <mapper resource="personMapper.xml"></mapper>
    </mappers>
</configuration>

测试结果

我的结构

送上我的座右铭:努力到无能为力才会看起来毫不费力

  • 如果有错误欢迎指正