Mybatis-文件

简单介绍下Maven项目中与Mybatis相关的各文件的作用。
目录
- pom.xml
- mybatis-config.xml
- xxxMapper.xml
- xxxMapper.java
- xxxDao.java
- xxDaoImpl.java
介绍
1. pom.xml
这个了解maven的肯定知道,在这里主要是为了导入mybatis&jdbc依赖。
<!--jdbc-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
2. mybatis-config.xml
这个文件是一个关键文件,负责整个项目中Mybatis的配置。
其标签作用很丰富,如数据库的连接、内外部参数的引入、x0xxMapper.xml的使用、命名规则的转换、缓存设置等。现在介绍其中最重要的几个:
2.1 【标签】configuration
根标签
2.2 【标签】properties
属性变量集合,相当于本文件中定义/存放属性变量的位置
2.2.1 【属性】 resource 用于引入外部文件中的属性变量集合
mybatis-config.xml 中引入
<properties resource="jdbc.properties">
</properties>
jdbc.properties 中原始数据
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssmdemo?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
jdbc.username=root
jdbc.password=root
在mybatis-config.xml 中使用
<property name="driver" value="${jdbc.driverClass}"/>
2.2.2 【标签】 property:定义属性变量
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
ps:这种写法是直接在mybatis-config.xml文件中定义属性变量,与利用properties的resource导入属性变量效果一样
2.3 【标签】environments ❗️❗️❗️ 重要
一个工程会有很多模式,比如,开发模式、测试模式和生产模式。不同模式运行的环境是不同的,mybatis运行环境也可能有所差异,因此我们在配置文件mybatis-config.xml的environments标签中也会有不同运行环境相应的配置。
2.3.1. 【标签】environment:
具体某种运行环境,一下为某测试test环境:
<environment id="test">
<transactionManager type="jdbc"/>
<dataSource type="POOLED">
.......
</dataSource>
</environment>
2.3.1.1 【属性】 id
用于唯一标定一个environment
2.3.1.2 【标签】 transactionManager标签
事务管理标签
2.3.1.2.1 【属性】 type
用于标定事务的属性,不仅只有jdbc类型,还有其他类型,详情可以参考这里。
2.3.1.3 【标签】 dataSource
<dataSource type="POOLED">
<!-- 注意${jdbc.xxx}调用的就是2.2.1.1 中jdbc.properties文件中的属性变量 -->
<property name="driver" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
2.3.1.3.2 【属性】 type
标定了数据源类型,有以下三种,详情可以参考这里
unpooled:非池型数据源
pooled:池型数据源
jndi:托管型
2.3.1.3.1 【标签】 property
具体存储属性变量 用name-value形式存储
a. 【属性】 name
b. 【属性】 value
2.4 【标签】 mappers
mapper标签的集合
2.4.1 【标签】 mapper
与 存储sql的文件xxxMapper.xml 文件关联,如果不关联则这个xxxMapper.xml 无法被发现
2.4.1.1 【属性】 resource
xxxMapper.xml的位置
2.5 【标签】 typeAliases
设置别名,用于速断全限定名长度
<typeAliases>
<typeAlias alias="name" type="org.ppp.user.name">
<typeAliases/>
2.6 【标签】 settings
用于设置一些mybatis属性
<!-- 开启驼峰匹配 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
3. application-xxx.properties
在springboot项目中,我们可以采取注解的方式实现很多查询,不再需要写mybatis-config.xml了,甚至不再需要写xxxMapper.xml了。
这部分推荐一个案例:关于Springboot-Mybatis无配置文件注解版的思考
4. xxxMapper.xml
这部分强烈推荐看这里 Mybatis教程-实战看这一篇就够了。这部分的论述,我很多是直接✍鸟哥的,在此对原作者鸟哥表示🙇!
4.1 CRUD标签
<select id="queryUserById" resultType="com.zpc.mybatis.pojo.User">
select * from user where id=${id}
<!-- 相较于${id},#{id}会加上双引号,可以防止sql注入 -->
</select>
- select
select中的几个属性说明:
id属性:当前名称空间下的statement的唯一标识。必须。要求id和mapper接口中的方法的名字一致。
resultType:将结果集映射为java的对象类型。必须(和 resultMap 二选一)
parameterType:传入参数类型。可以省略
- insert
insert 的几个属性说明:
id:唯一标识,随便写,在同一个命名空间下保持唯一,使用动态代理之后要求和方法名保持一致
parameterType:参数的类型,使用动态代理之后和方法的参数类型一致
useGeneratedKeys:开启主键回写
keyColumn:指定数据库的主键
keyProperty:主键对应的pojo属性名
标签内部:具体的sql语句。
- update
id属性:当前名称空间下的statement的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的sql语句。
- delete
delete 的几个属性说明:
id属性:当前名称空间下的statement的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的sql语句。
4.2 resultMap
4.3 sql片段
过于繁琐,在此略过
5. xxxMapper.java
用于调用
FireconCartMapper.java文件
public interface FireconCartMapper extends Mapper<FireconCart>{
//可以采用注解的方式来执行Sql
@Delete({"<script> delete from firecon_cart where account = #{account}; </script>"})
int deleteThis(@Param("account")String account);
//也可以关联FireconCartMapper.xml文件
public List<Map> FindFireconCart(String account);
}
FireconCartMapper.xml文件
<select id="FindFireconCart" resultMap="CartInfo">
SELECT * from firecon_cart where account = #{account}
</select>