要点
环境准备
-
因为从数据库中拿到的数据需要转换为实体类对象 ,所以需要定义一个pojo来接受和转换数据
-
实体类(pojo)创建完成之后需要创建mapper接口 ,mapper接口就相当于原来的dao
-
mapper接口的命名和实体类名对应 ,因为myBatis有面向接口编程的功能 ,所以每当我们调用接口中的方法 ,他就会帮我们自动匹配sql语句并且执行
-
一个mapper接口对应的是一个dao ,所以一张表也就对应着一个dao ,也就是一个mapper接口 ,所以以后有几张表就是几个mapper接口和几个mapper映射文件
-
映射文件(xml)的namespece要和mapper接口的全类名保持一致
-
映射文件(xml)中 sql语句的id是sql语句的唯一标识 ,要和mapper接口的方法名保持一致
操作数据库
-
增删改的sql语句返回的是影响行数
-
myBatis提供了一个操作数据库的对象 ,叫做sqlsession
-
先获取配置文件 ,Resources中有一个getResouceasStream可以获取字节输入流 读取配置文件 ,输入配置文件的路径 ,返回字节输入流对象
-
通过SqlSessionFactoryBuilder()获取SqlSessionFactoryBuilder对象
-
getmapper使用的是 ,代理模式 获取mapper的实现类对象
-
通过SqlSessionFactorBuilder对象.build ,传入字节输入流对象返回sqlSessionFactory对象
-
注意下面事务提交的位置 ,是在sql语句执行之后 ,当上面的pensession没有开启true的时候 ,就是手动提交事务 ,但是当开启true ,就是自动提交事务
步骤
-
创建pojo
-
创建pojo-mapper
-
创建映射文件pojo-mapper.xml
接受结果对象
resultType : 结果类型(当执行完sql之后接受的结果是一个对象的时候 ,而且数据库字段名和对象的属性名一致的时候 ,使用resultType ,否则resultMap)
resultMap : 结果集合(映射)
核心配置文件
<?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>
<!--引入properties文件,此时就可以${属性名}的方式访问属性值-->
<properties resource="jdbc.properties"></properties>
<settings>
<!--将表中字段的下划线自动转换为驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
<typeAliases>
<!--
typeAlias:设置某个具体的类型的别名
属性:
type:需要设置别名的类型的全类名
alias:设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名且不区分大小
写
若设置此属性,此时该类型的别名只能使用alias所设置的值
-->
<!--<typeAlias type="com.atguigu.mybatis.bean.User"></typeAlias>-->
<!--<typeAlias type="com.atguigu.mybatis.bean.User" alias="abc">
</typeAlias>-->
<!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
<package name="com.atguigu.mybatis.bean"/>
</typeAliases>
<!--
environments:设置多个连接数据库的环境
属性:
default:设置默认使用的环境的id
-->
<environments default="mysql_test">
<!--
environment:设置具体的连接数据库的环境信息
属性:
id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的id,
表示默认使用的环境
-->
<environment id="mysql_test">
<!--
transactionManager:设置事务管理方式
属性:
type:设置事务管理方式,type="JDBC|MANAGED"
type="JDBC":设置当前环境的事务管理都必须手动处理
type="MANAGED":设置事务被管理,例如spring中的AOP
-->
<transactionManager type="JDBC"/>
<!--
dataSource:设置数据源
属性:
type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"
type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从
缓存中直接获取,不需要重新创建
type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建
type="JNDI":调用上下文中的数据源
-->
<dataSource type="POOLED">
<!--设置驱动类的全类名-->
<property name="driver" value="${jdbc.driver}"/>
<!--设置连接数据库的连接地址-->
<property name="url" value="${jdbc.url}"/>
<!--设置连接数据库的用户名-->
<property name="username" value="${jdbc.username}"/>
<!--设置连接数据库的密码-->
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<mapper resource="UserMapper.xml"/>
<!--
以包为单位,将包下所有的映射文件引入核心配置文件
注意:此方式必须保证mapper接口和mapper映射文件必须在相同的包下
-->
<package name="com.atguigu.mybatis.mapper"/>
</mappers>
</configuration>
注意
-
在resources下面创一层一层的目录的时候 ,要用斜线分隔 ,如果用点来分隔 ,创建出来的只有一层目录
需要使用斜线分隔
用点分隔 ,出现的只有一层目录
-
以包为单位引入映射文件
-
要求 :
-
mapper接口所在的包要和映射文件所在的包保持一致
-
mapper接口要和映射文件的名字一致
-
-