MyBatis的特点
MyBatis是一个优秀的数据持久层框架,它对JDBC的操作数据库的过程进行封装。
MyBatis使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建Connection、创建Statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。
MyBatis通过xml或注解的方式将要执行的各种Statement(Statement、PreparedStatement、CallableStatement)配置起来,并通过Java对象和Statement中的SQL进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射成Java对象并返回。
MyBatis的基础环境配置
1、下载mybatis的jar包。地址: www.mybatis.cn/
2、创建web工程,使用软件:eclipse
3、导入jar包:mybatis-3.5.2.jar、 log4j-1.2.17.jar、 mysql-connector-java-5.1.32.jar
4、编写mybatis主配置文件myBatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
5、加入log4j配置文件(不是必需,但是建议加入)
主配置文件:myBatis-config.xml详解
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 上面这段是版本化的标签,xml文件生成的时候自带 -->
<!-- 对标签支持的描述,这里是mybatis3的标准 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 配置 -->
<configuration>
<!-- 二级缓存 -->
<settings>
<!--
主配置文件中的二级缓存的开关是总开关
默认的情况下是开启的,也就是true
如果想在主配置开启开启二级缓存的总开关,不用配置<setting name="cacheEnabled" value="true"/>
如果要想在主配置文件禁用二级缓存禁用可以把value设为false,
如果这里设为false,Mapper.xml或SQL语句级的缓存配置不再起作用
-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 配置别名集,注意,配置别名要放在主配置文件开头,别名可以配置多个 -->
<typeAliases>
<!--
type属性是原有的实体类的全类名
alias属性是原实体类的别名
定义了别名之后,在xml映射器需要实体这个实体类的时候直接使用别名就可以
-->
<typeAlias type="com.test.day38.Student" alias="Student"/>
<typeAlias type="com.test.day38.User" alias="User"/>
<typeAlias type="com.test.day40.Emp" alias="Emp"/>
<typeAlias type="com.test.day40.Dept" alias="Dept"/>
</typeAliases>
<!-- environments,配置数据源环境
environments表示可以包含多个environment
我们在项目的不同阶段,是有不同的数据源配置,不可能在所有阶段共用一个数据库
比如, 开发的数据库和真正的生产数据库不是一个
如果要是只有一个数据源,就得在不同的阶段进行修改,不如直接设置多个数据源
default属性,默认的意思,default的值就当前环境默认的数据源的id
default="development" 表示 当前使用是id为development的数据源环境
-->
<!-- 数据源环境配置 -->
<environments default="development">
<!-- 具体数据源环境配置,id唯一 -->
<environment id="development">
<!-- transactionManager事务管理,事务交给JDBC管理 -->
<transactionManager type="JDBC" />
<!-- dataSource,数据源
type,类型,目前POOLED,就是数据库连接池 -->
<dataSource type="POOLED">
<!-- 数据库的驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 数据库的连接
在连接后面加入?useUnicode=true&characterEncoding=UTF-8 可以防止数据库乱码问题 -->
<property name="url" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 主配置文件引入映射器 -->
<mappers>
<!--
resource属性,代表当前的 mapper配置是引入的xml映射器
属性的值,就是把映射器所在的包名中的.替换成/,后面拼接映射器的文件名.后缀名
-->
<!-- <mapper resource="com/test/day38/StudentMapper.xml" />
<mapper resource="com/test/day38/StudentMapperIn.xml" /> -->
<!--
class属性,就引入的接口映射器,使用的是注解+接口映射器
值是接口包名.接口名
-->
<!-- <mapper class="com.test.day38.StudentIn2" /> -->
<!--
在使用注解+接口映射器的时候,可能有很多的接口
如果每个接口都要使用class="xxx"的方式引入就会写好多这样的配置
为了避免这种情况
可以直接配置包名,这样可以引入这个包下所有的带注解的接口
-->
<!-- <package name="com.test.day38" /> -->
<mapper resource="com/test/day38/StudentCURDMapper.xml" />
<mapper resource="com/test/day39/DynamicSqlMapper.xml" />
<mapper resource="com/test/day40/EmpMapper.xml" />
<mapper resource="com/test/day40/DeptMapper.xml" />
<mapper resource="com/test/day40/ParamMapper.xml" />
</mappers>
</configuration>
注意:主配置文件中标签是有顺序的 properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory, reflectorFactory, plugins, environments, databaseIdProvider, mappers