当前位置: 首页 > news >正文

MyBatis笔记——Mapper动态代理

前提概要

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。

Mapper接口开发需要遵循以下规范:

1.Mapper.xml文件中的namespace与mapper接口的类路径相同。
2.Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

下面是实例介绍。


1.环境配置

工程目录结构如下
目录

SqlMapConfig.xml

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/db_pwc" />
                <property name="username" value="pwc" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/pwc/dao/mapper/UserMapper.xml" />
    </mappers>
</configuration>

2.Mapper映射接口(UserMapper.java)和Mapper映射表(UserMapper.xml)

UserMapper.java

package com.pwc.dao.mapper;

import java.util.List;

import com.pwc.pojo.User;

public interface UserMapper {

    public User findById(int id);
    public void deleteById(int id);
    public void insert(User user);
    public List<User> findByAge(int age);

}

UserMapper.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.pwc.dao.mapper.UserMapper">
    <select id="findById" parameterType="int" resultType="com.pwc.pojo.User">
        SELECT * FROM User WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="com.pwc.pojo.User">
        INSERT INTO User(name,age) VALUES(#{name},#{age})
    </insert>

    <delete id="deleteById" parameterType="int">
        DELETE * FROM User WHERE id=#{id}

    </delete>

    <select id="findByAge" parameterType="int" resultType="com.pwc.pojo.User">
        SELECT * FROM User WHERE age=#{age}
    </select>

</mapper>

3.测试

测试类

package com.pwc.test;

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

import com.pwc.dao.mapper.UserMapper;
import com.pwc.pojo.User;

public class Test {

    public static void main(String[] args) {

        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        SqlSessionFactory factory=builder.build(Test.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
        SqlSession session = factory.openSession();

        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.findById(1);
        session.close();
        System.out.println(user);

    }

}

测试结果如下
User [id=1, name=pwc, age=18]

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

转载于:https://www.cnblogs.com/pwc1996/p/4839134.html

相关文章:

  • python教程
  • C语言 实现 给定两个整形变量的值,将两个值的内容进行交换
  • 更为适合并发的极简易队列
  • 2016年一些面试题的整理和心情--1异或到100
  • WINDOW10下修正CHROME字体问题解决方案
  • 不能在 DropDownList 中选择多个项。其解决办法及补充
  • 如果使用得当,MySQL 也可以化身 NoSQL
  • 一些非常经典的awk小技巧
  • Tarjan 求强连通分量
  • css3 多行文本 溢出 省略号
  • Android 相关 AS 下载地址,源码下载地址
  • [LeetCode]: 145: Binary Tree Postorder Traversal
  • 25个你会喜欢的创新的水平滚动网站设计欣赏
  • C++ unordered_map remove 实现哈希表移除
  • HTML+CSS+div学习——第一课
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CSS 专业技巧
  • HTTP 简介
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java到底能干嘛?
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Mysql数据库的条件查询语句
  • Shadow DOM 内部构造及如何构建独立组件
  • Shell编程
  • Spring声明式事务管理之一:五大属性分析
  • Unix命令
  • win10下安装mysql5.7
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 力扣(LeetCode)357
  • 码农张的Bug人生 - 初来乍到
  • 小李飞刀:SQL题目刷起来!
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Java总结 - String - 这篇请使劲喷我
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​业务双活的数据切换思路设计(下)
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #mysql 8.0 踩坑日记
  • $refs 、$nextTic、动态组件、name的使用
  • (07)Hive——窗口函数详解
  • (C++17) optional的使用
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (pojstep1.3.1)1017(构造法模拟)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)求1到1亿间的质数或素数
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)fock函数详解
  • (转)大道至简,职场上做人做事做管理
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统