mybatis配置解析

  • 配置顺序
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
***<!-- 注意元素节点的顺序!顺序不对会报错 -->***

  • 环境配置
    在这里插入图片描述

  • mappers:映射器(定义映射sql语句文件,即mapper.xml文件),通常每个mapper.xml文件在mappers标签对中间注册一个mapper,有三种方式
    1.resource:使用资源引用,相对于类路径
    2.url:统一资源定位符(很少使用)
    3.class:使用映射器接口实现类的完全限定类名需要配置文件名称和接口名称一致,并且位于同一目录下
    在这里插入图片描述
    注意:注意不同方式定位文件的分隔符!!!!!!!
    还有另外一种方式
    补充:package:将当前包下的所有接口都注册为映射器
    在这里插入图片描述

  • Mapper文件
    在这里插入图片描述

  • typeAliases(别名):减少类完全限定名冗余
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述


还要说一个特别的功能:万能的map


场景:当你的接口方法需要向sql语句中传递多个参数时?
解决方式1:传递参数,并且***最好***在参数前面加上@Param(“参数名”)注解

接口中的方法:

//    根据用户名和密码查询
    User queryForNameAndPwd(@Param("name")String name,@Param("pwd")String pwd);

xml中的查询语句

<!--    根据用户名和密码查询-->
    <select id="queryForNameAndPwd" resultType="User">
         select * from mybatis.user where username =#{name} and password = #{pwd};
    </select>

测试代码

    @Test
    public void queryForNameAndPwd(){
        SqlSession sqlsession = MybatisUtils.getSqlsession();

        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        User user = mapper.queryForNameAndPwd("Summer", "123456");
        System.out.println(user);

        sqlsession.close();
    }
解决方法2(使用万能的map)

接口的中代码

    //    根据用户名和密码查询2(使用万能的map)
    User queryForNameAndPwd2(Map<String,Object> map);

xml中的代码

    <!--    根据用户名和密码查询-->
    <select id="queryForNameAndPwd2" resultType="user">
         select * from mybatis.user where username =#{name} and password = #{pwd};
    </select>

测试代码

    @Test
    public void queryForNameAndPwd2(){
        SqlSession sqlsession = MybatisUtils.getSqlsession();

        UserMapper mapper = sqlsession.getMapper(UserMapper.class);

        Map<String, Object> map = new HashMap<String, Object>();

        map.put("name","Summer");
        map.put("pwd","123456");
        User user = mapper.queryForNameAndPwd2(map);
        System.out.println(user);
        sqlsession.close();
    }

总结:在需要传递多个参数时,我们可以将参数放在一个map中。

文章参考:来源于某站某神的视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值