mybatis配置错误解析
注意!在Mapper.xml的配置文件中,namespace的路径要写成这种形式
<mapper namespace="com.wang.Dao.UserMapper">
因为它找的是JAVA文件,所以可以点出来,但是!
在核心配置文件中,有一个定义mapper位置的路径,要用/写:
<mappers>
<mapper resource="com/wang/Dao/UserMapper.xml"/>
</mappers>
因为它找的xml文件,所以不能点出来,要用/来写
如何通过Map集合自定义传递参数类型
接口:
//使用map传递参数重写addUser方法
int addUser2(Map<String,Object> map);
<insert id="addUser2" parameterType="Map">
insert into mybatis.user(id, name, pwd) values (#{myid},#{myname},#{mypwd});
</insert>
@Test
public void addUserTest(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap();
map.put("myid",5);
map.put("myname","卢崛");
map.put("mypwd","宝哥我能去你家过年吗");
int result = userMapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
注意知识点!接口中最好不要重载方法,idea识别不出来,还是会把Map当做前面的User对象来解析导致出错
模糊查询:
public void getUserBylike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> list = userMapper.getUserBylike("%卢%");
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}
}
主要是JAVA的测试代码中加入模糊查询用到的%%
配置解析
mybatis-config.xml
优化mybatis配置:
在这个XML文件,各个标签都是由先后定义顺序的,外部引入properties文件,标签必须放在前面
新建一个db.properties文件,写入以下配置
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
然后在核心配置文件中进行外部引入:
<properties resource="db.properties" />
其中如果写成了双闭合,还可以再追加一些属性操作
怎么给包取别名:
<typeAliases>
<!-- <typeAlias type="com.wang.pojo.User" alias="User"/>-->
<package name="com.wang.pojo"/>
</typeAliases>
第二种这种方式就是直接在引用的时候,用首字母小写的类名就可以
还有一种方式,注解:
@Alias("梁志斌")
但是考虑后续学习注解开发过多,不建议使用
怎么引入mapper:
<mappers>
<mapper resource="com/wang/Dao/UserMapper.xml"/>
</mappers>
推荐使用这种,还有另外的使用class关键字或者packet都不推荐,因为有使用限制,要求接口和Mapper.xml同名而且要在同一个文件夹下
另外还有一些Mybatis中的一些设置,也是在这个核心配置文件中进行设置,具体方法查看地址:
点击我获取Mybatis的核心配置方法以及值代表含义