zoukankan      html  css  js  c++  java
  • 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的烦恼

  • 相关阅读:
    559. N叉树的最大深度
    999. 车的可用捕获量
    1051. 高度检查器
    238. 除自身以外数组的乘积
    【Go】Go语言的%d,%p,%v等占位符的使用
    【Java】commons-lang3中DateUtils类方法介绍
    【Java】时间戳与Date相互转换
    【Linux】crontab定时任务用用法
    【Java】使用Lambda排序集合
    【PBFT】拜占庭容错
  • 原文地址:https://www.cnblogs.com/oscar1987121/p/10745811.html
Copyright © 2011-2022 走看看