Mybatis代理

Posted 长命百岁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis代理相关的知识,希望对你有一定的参考价值。

先看代码

java代码部分

package com.test;

import java.io.IOException;
import java.io.InputStream;
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 com.test.model.User;
import com.test.model.UserDao;

public class MybatisTest {

    public static void main(String[] args) throws IOException {

        //读取配置文件
        InputStream configFile = Resources.getResourceAsStream("mybatis.xml");

        //根据配置文件新建一个工作方法
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configFile);

        //利用工程方法启动一个session
        SqlSession session = factory.openSession(true);

        //传统方式,调用查询方法
//        String ids = "1";
//        User user = session.selectOne("user.getUserById",ids);

    
     //使用代理方式 UserDao userDao = session.getMapper(UserDao.class); User user = userDao.getUserById("1"); System.out.println(user); session.close();

 

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">

<!-- 这里的namespace的值对应的是配置文件的工作空间,一般是已配置文件的相对路径为值,可以保证唯一性 -->
<mapper namespace="com.test.model.UserDao">

    <!-- 这里的id是唯一标识 -->
    <!-- 这里的parameterType的值是入参类型,多参数传递需要使用其它方式,请看多参数传递的文章 -->
    <!-- 这里的resultType是返回值,这里的意思就是放回一个对应的对象 -->
    <!-- 这里的#{}里面的值名称需要和方法中的第一个参数名一致 -->
    <select id="getUserById" parameterType="java.lang.String" resultType="com.test.model.User">
        select * from users where id=#{id}
    </select>
</mapper>

 

UserDao

package com.test.model;

public interface UserDao {
    User getUserById(String id);
}

 

代码分析:

session.getMapper(UserDao.class)就是执行了对应的com.test.model.UserDao的类,并执行了里面对应Key的代码,省去了在代码当中需要写入key的烦恼

以上是关于Mybatis代理的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis——Dao层实现映射文件深入核心配置文件深入

mybatis快速入门-spring-mybatis动态代理整合

markdown [mybatis参考]关于mybatis #mybatis的一些片段

MyBatis代理开发

Mybatis逆向工程,缓存,代理知识要点

Spring+SpringMVC+MyBatis深入学习及搭建——MyBatis原始Dao开发和mapper代理开发