Mybatis——动态代理的执行方式及规范

Posted 红颜莫知己

tags:

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

mybatis的动态代理的规范

注意:要使用mybatis动态代理的方式,要保证下列5个规范

  • 映射xml文件和接口类在同一目录
  • 映射xml文件名和接口名一样
  • 映射文件中的namespace的值要和接口类的全包名相同
  • 接口的方法名要和映射文件中查询配置的id相同
  • 接口的参数名和返回类型要和映射文件中对应的查询配置参数一致

在这里插入图片描述

1.创建 dao层接口ChannelDao

package edu.xalead.dao;

import edu.xalead.Channel;

import java.util.List;

public interface ChannelDao {
    public void addChannel(Channel channel);
    public void delChannel(int id);
    public Channel findByCId(int id);
    public List<Channel> findAll();
}

2.创建映射文件ChannelDao.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="edu.xalead.dao.ChannelDao">
    <!-- 配置查询所有操作 -->
    <select id="findAll" resultType="edu.xalead.Channel">
        select * from t_channel
    </select>

    <!--配置添加操作-->
    <insert id="addChannel">
        insert into t_channel(cid,cname,description) values (#{cid},#{cname},#{description})
    </insert>


    <!--配置删除操作-->
    <delete id="delChannel">
        delete from t_channel where cid = #{cid}
    </delete>

    <!--配置只查询一个对象操作-->
    <select id="findChannelById" resultType="edu.xalead.Channel">
        select * from t_channel where cid = #{cid}
    </select>
</mapper>

3.测试

/**
     * 创建mybatis工厂
     */

    SqlSession sqlSession = null;
    ChannelDao mapper = null;
    @Before
    public void createSession(){
        try {
            //读取配置文件
            InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

            //创建SqlSessionFactory的构建者对象
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

            //创建SqlSessionFactory工厂
            SqlSessionFactory factory = builder.build(in);

            //创建连接(会话)
            sqlSession = factory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @After
    public void closeSession(){
        if (sqlSession != null) {
            sqlSession.commit();
            sqlSession.close();
        }
    }

添加

Channel c = new Channel();
c.setCid(16);
c.setCname("周杰伦");
c.setDescription("依然范特西");
mapper.addChannel(c);

删除

mapper.delChannel(14);

查询一个对象

Channel channelById = mapper.findChannelById(15);

查询所有对象

List<Channel> channelList = mapper.findAll();

若有不懂的学者,可以转博客Mybatis——CRUD操作,增删改查具体细节都在里面

以上是关于Mybatis——动态代理的执行方式及规范的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis——动态代理的执行方式及规范

Mybatis学习系列Mapper接口动态代理

Mybatis框架中Mapper动态代理方式

Mybatis实现Mapper动态代理方式

Mybatis笔记 - Mapper动态代理开发方式

Mybatis Mapper动态代理方式