Mybatis入门(二)-----约定配置(接口编程)

Mybatis中什么是约定编程呢?

就是你在编程的过程中遵循它的规定,然后让它去帮你做事情;

从上一篇的文章案例中我们发现,每次都需要去手动的写statement,这是很麻烦的,那么我们来看看这种约定的接口编程。

也就是我们常说的接口映射:  接口的名字为namespace的名字,接口的方法名字为标签id的名字,这样的话一个方法就对应了一个sql了,这些方法都不需要你去自己实现,由mybaits为你自动实现的,这就是约定。

上案例

在上一篇文章的基础上我们来看看:

配置文件中我们通过了<properties>标签导入了db.properties文件,以达到将数据源存放在一个文件中,方便修改。

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE configuration  PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<properties resource="db.properties"/>
     <!-- 全局配置设置 -->
<!--      <settings>
        
     </settings> -->
     
     <!-- 单个设置别名或批量设置别名 -->
     <typeAliases>
        <!-- 单个 -->
        <typeAlias type="Pojo.User"  alias="user"/>
        <!-- 批量-->
       <!--  <package name="Pojo"/> -->
       
     </typeAliases>
      <!--内置的类型处理器  -->
	<environments default="development">
		<environment id="development">
		    <!-- 事务处理JDBC -->
			<transactionManager type="JDBC" />
			<!-- 连接池的方式 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url"   value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	
	
	<mappers>
		<mapper resource="Mapper/UserMapperTest.xml" />
	</mappers>
	
	

</configuration>

我们需要由一个接口去映射Mapper文件,因此建一个包里面放对应的接口与mapper文件

package Mapper;

import Pojo.User;

/**
 * @author 红星
 *  这是约定   主要是为了简化statement
 *  1.   方法名字和mapper文件中的id值是相同的 
 *  2.   参数与标签中的参数值是一样的
 *  3.   就是返回值和出入值
 *  4.   如何去找某个mapper文件呢,接口名字就是相对应的mapper文件
 */
public interface UserMapperTest {
   //接口中的方法默认public  abstract
	/*
	 * 过程就是根据接口名找namespace
	 * 根据方法名找id
	 * 根据输入输出确定一条sql
	 * Mapper文件 与接口放一个里面
	 */
	User selectUserbyid(int id);
	//selectall();
}

这样的话我们在测试的时候只需要如下

package Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import Mapper.UserMapperTest;
import Pojo.User;

public class test {

	/**
	 * @param args
	 * @throws IOException
	 *  
	 */
	public static void main(String[] args) throws IOException  {
		// TODO Auto-generated method stub
        //需要加载数据源,加载config文件
		Reader reader = Resources.getResourceAsReader("Mybaitis_config.xml");
		//SqlSessionFactory
		SqlSessionFactory sessionfactroy = new SqlSessionFactoryBuilder().build(reader);
		SqlSession session = sessionfactroy.openSession();
		
		// 查id为1的值
        UserMapperTest usermapper = session.getMapper(UserMapperTest.class);
        User user = usermapper.selectUserbyid(1);
        System.out.println(user.toString());
        session.close();
}
}

这里通过session.getmapper(),反射传入接口类,得到一个mapper对象,去调用方法,这样的话就不用我们一直去手动的写一个statement了 ,方便了许多,而且接口里门的方法本身也不需要我们自己去实现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值