上篇发布是mybatis中CRUD的方法实现,今天发布的是mybatis中的动态代理模式
- 动态代理模式的原则:约定优于配置
- 约定的目标:省略掉statement,即根据约定直接可以定位出SQL语句
- 实现动态代理模式就是新建一个接口,但不是随便建一个接口,而是有约定的!
-
- 方法名和mapper.xml文件中标签的id值相同
- 方法的输入参数和mapper.xml文件中标签的parameterType类型一致(如果没有parameterType就说明没有输入参数)
- 方法的返回值和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>
测试结果

我的结构

送上我的座右铭:努力到无能为力才会看起来毫不费力
- 如果有错误欢迎指正