标签不要匹配错误
接口和接口对应的mapper文件要匹配。namespace里一定要是全限定名。CRUD里面id要和对应接口的方法名一致。
resources的mybatis核心配置文件没有注册接口对应的mapper文件。
每一个接口的方法对应的mapper.xml文件都要再Mybatis核心配置文件里<mappers>标签里进行注册。
程序配置文件要符合规范(注意顺序要求)
-----------------------配置文件顶部---------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?> 这一部分是xml配置文件的相关配置 版本+编码集
【MyBatis的DTD约束:固定写法】
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
-----------------------配置文件顶部--------------------------------------------------
核心配置文件中的 引入标签的顺序:
是由约束决定的 通过约束 【ctrl+鼠标左键】 可以进入 约束查看
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
按照约束规定的顺序书写就可以 顺序应该是:
1.<properties自闭合标签 resource属性/>
a. 标签作用:引入数据库的配置文件 文件名一般是:JDBC.properties
b. 属性值:配置文件路径(String) 由于配置文件一般放在src文件夹下 所以一般写成配置文件的名称
2.<settings标签>
<setting标签 name属性1 value属性1/>
<setting标签 name属性2 value属性2/>
</settings>
a. settings标签:引入插件的配置文件(相对根标签 内部可以引入多个插件)
b. setting 标签:引入单个插件的配置文件 在settings 标签内部 可以有多个
b1. name 属性:自行百度 很多属性 根据需求查找
b2. value 属性:自行百度 很多属性 根据需求查找
3.<typeAliases标签>
<typeAlias 自闭合标签 type属性 alias属性/>
<package 自闭合标签 name属性/>
</typeAliases>
a.typeAliases 标签 : 这里是对映射配置文件中的 resultType和 parameterType 起别名,为了使用便捷【相对根标签、起别名是对于自定义的javaBean类】
b.typeAlias 标签: 对于单个javaBean类 起别名
b1.type属性:从src包开始的javaBean类的路径
b2.alias属性:起的别名【一般是以类名为别名 首字母小写】
c.package 标签: 因为一般情况 我们会把所有的javaBean类 都放到bean这个包下 ,所以这里提供的这个标签是对一个包下所有的javaBean类起别名
c.name属性:从src包开始的bean包的路径
-----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
4.typeHandlers
5.objectFactory
6.objectWrapperFactory
7.reflectorFactory
----------------------中间间隔------[暂时还没有配置的标签]-----------------------------
8.<plugins标签>
<plugin标签 interceptor属性></plugin>
</plugins>
a.plugins标签:配置插件的相对根标签 由于可能会配置多个插件 所以需要plugins根标签包裹
b.plugin标签:配置单个插件的标签
b1. interceptor属性:值为需要配置的插件的路径
配置分页功能的属性值为:com.github.pagehelper.PageInterceptor 固定路径【lib直接在src下】
9.<environments标签 default属性>
<environment标签 id属性>
<transactionManager标签 type属性>
<dataSource标签 type属性>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
........
</dataSource标签>
</environment标签>
<environment标签 id属性>
<transactionManager标签 type属性>
<dataSource标签 type属性>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
........
</dataSource>
</environment>
<environments>
a. environments标签:用来引入数据库环境的配置单元根标签【可包含多个】
a1. default 属性:与 environment中的id属性相对应 使用哪个environment中的id属性 就代表使用哪个配置
b. environment 标签:单个数据库环境引入的根标签
b1. id属性:每一个属性的唯一标识 通过id属性的值 来找到使用的是哪个配置
c. transactionManager标签:确定事务管理模式的标签
c1. type属性:确定使用哪个事务管理模式 一共两个值:
JDBC:正常的commit和rollback 方式
MANAGE:百度查具体是什么意思
d. dataSource 标签:规定使用何种数据源的标签(连接池,第三方容器等等)【相对根标签】
d1. type属性:具体确定数据源使用何种模式配置 一共三个值:
UNPOOLED:百度查含义
POOLED:使用连接池
JNDI:其他框架提供的容器
e. property 标签:配置数据源的单个配置标签 【其实就是JDBC所需要的的配置 包含:驱动配置,数据库地址,登录账号,密码等等】
e1.name:与JDBC的配置文件中的key一一对应 每个key对应一条property 标签语句
e2.value:底层获取 JDBC配置文件 对应key的值 格式是: ${变量名} 变量名为了代码的可读性一般和key是一样的
-----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
10.databaseIdProvider
-----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
11.<mappers 根标签>【基于配置文件sql语句来实现 使用这个Mappers标签中的格式】
<mapper标签 resource属性>
</mappers>
a. mappers标签 :引入映射文件(sql语句的配置文件)的根标签
b. mapper标签:mapper标签 一次有且只能有一个 使用哪一个Mapper接口 就配置哪个相对应的Mapper
resource:引入单个映射文件的标识:与每一个映射文件自定义文件名相同【需要加后缀】
11.<mappers 根标签> 【基于注解配置sql语句 使用这个Mappers标签中的格式】
<package标签 name属性/>
</mappers>
a.mappers标签:解释同上
package属性:值是 你的数据访问层的哪个接口所在的是哪个包 需要注意的是:这里是包路径而不是文件路径 而且包路径可以不用那么精确
比如 准确包路径是: com.xxx.mapper 写成 com.xxx也可以 写成 com也可以【底层通过遍历找到】
maven资源没有导出:
解决方法可以参考我的另一篇博客
就是在pom.xml文件里添加如下代码:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>