- 配置顺序
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中。
文章参考:来源于某站某神的视频