ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis动态代理

2021-03-15 16:30:42  阅读:117  来源: 互联网

标签:xml mapper UserMapper 代理 接口 user sql mybatis 动态


简单使用

Mapper动态代理开发遵从的规范

  • sql映射文件的namespace必须和mapper接口的全限定类名保持一致
  • mapper接口的接口方法名必须和xml中的sql语句id保持一致
  • mapper接口的接口方法形参类型必须和sql语句的输入参数类型保持一致
  • mapper接口的接口方法返回类型必须和sql语句的resultType保持一致
  1. 定义接口(放到mapper包下,将mapper的xml放到和接口同样的路径)
    public interface UserMapper {
        User queryUserById(Integer id);
    }
    
  2. 配置mapper.xml文件
    <!-- namespace属性值=接口全限定名-->
    <mapper namespace="com.itheima.mapper.UserMapper">
       <!-- id属性值=方法名-->
       <select id="queryUserById" parameterType="Integer" resultType="com.itheima.pojo.User">
          select * from user where id=#{id}
      </select>
    </mapper>
    
    在这里插入图片描述
  3. 使用
    @Test
    public void userMapper() throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.queryUserById(2);
        System.out.println(user);
    }
    

全局配置文件mappers

  • mappers注册sql映射文件的
    • resource属性加载sql映射文件
    • mapper class 单个注册
    • package 批量扫描注册
<mappers>
    <mapper resource="mapper/UserMapper.xml" />
    <mapper class="com.itheima.mapper.UserMapper"></mapper>
    <package name="com.itheima.mapper"></package>
</mappers>

使用注解简化(去掉mappper.xml)

传统xml的配置方式

public interface UserMapper {
	int saveUser(User user);
    List<User> queryUser();
}
<?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.itheima.mapper.UserMapper">

    <insert id="saveUser" parameterType="user">
          insert into user values (null,#{username},#{sex},#{birthday},#{address})
    </insert>
    
    <select id="queryUser" resultType="user">
        select * from user
    </select>
    
</mapper>

通过注解去简化可以变成

public interface UserMapper {
	@Insert(" insert into user values (null,#{username},#{sex},#{birthday},#{address})")
    int saveUser(User user);

	@Select("select * from user")
    List<User> queryUser();
}

标签:xml,mapper,UserMapper,代理,接口,user,sql,mybatis,动态
来源: https://blog.csdn.net/qq754772661/article/details/114836914

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有