mybatis学习 九 代理开发

1.作用:

  实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象就可以获取 mapper.xml 中编写的 sql.

2.实现步骤:
  2.1 创建一个接口
    (1) 为了xxxMapper.xml文件与xxxMapper.java文件进行绑定,接口包名和接口名必须        xxxMapper.xml  中<mapper>标签namespace属性值相同,还要求xxxMapper.xml 与xxxMapper.java文件要在同一个包下    

    (2)接口中方法名和 xxxMapper.xml中select,insert,update 标签的 id 属性值相同

    (3)接口中的方法的参数与 xxxMapper.xml中select,insert,update标签的resultType属性值一致

    (4)接口中函数的返回值与 xxxMapper.xml中select,insert,update标签的parameterType属性值一致


  2.2 在 mybatis的全局配置文件中,在<mappers>标签中,不在使用<mapper>标签,使用<package>进      行扫描接口和 mapper.xml

代码

全局配置文件中配置<mappers>

<?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>
    <!-- 
        配置log4j
     -->
     <settings>
         <setting name="logImpl" value="LOG4J"/>
     </settings>
     <typeAliases>
        <package name="com.xxx.pojo"/>
    </typeAliases>

    <!-- default的值是<environment>的id,代表当前要连接的数据库环境
        【注】default的值一定要是一个<environment>,否则在获取SqlSession实例时会报空指针错误
     -->
    <environments default="mySqlJdbc">
        <environment id="mySqlJdbc">
            <!-- 事物标签,使用原生jdbc的事物 ,如果是MANAGERD表示交给其他容器管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据库连接池技术 -->
            <dataSource type="POOLED">
                <!-- property中的name的值,不能随便写,有规定的 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
        <environment id="oracleJdbc">
            <transactionManager type=""></transactionManager>
            <dataSource type=""></dataSource>
        </environment>
    </environments>
    
    
    <!-- 加载XXXMapper.xml
        如果采用代理开发,package批量指定xxxMapper.xml文件已经xxxMapper.java文件
     -->
    <mappers>
        <!-- <mapper resource="com/xxx/mapper/AccountMapper.xml"/>
        <mapper resource="com/xxx/mapper/LogMapper.xml"/> -->
        <package name="com.xxx.mapper"/>
    </mappers>
</configuration>

xxxMapper.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.xxx.mapper.AccountMapper">
      <select id="selByAccnoPwd" resultType="account" parameterType="account">
          select * from account where accno=#{accNo} and  password=#{password}
      </select>
      
      <select id="selByAccnoName" resultType="account" parameterType="account">
          select * from account where accno=#{accNo} and name=#{name}
      </select>
      
      <update id="updateBalanceByAccno" parameterType="account">
          update account set balance=balance+#{balance} where accno=#{accNo}
      </update>
  
  </mapper>

测试代码

public static void main(String[] args) throws IOException {
        InputStream in = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = sqlSessionFactory.openSession();
        //通过代理获取实现xxxMapper.java接口的实现类
        AccountMapper mapper=session.getMapper(AccountMapper.class);
        Account account=new Account();
        account.setAccNo("01");
        account.setPassword(1234);
        Account account2 = mapper.selByAccnoPwd(account);
        System.out.println(account2);
    }

猜你喜欢

转载自www.cnblogs.com/cplinux/p/9650948.html
今日推荐