使用mybatis
步骤:
1,
导入
mybatis
的核心包
,lib
下面所有包
2,
创建
mybatis
的核心配置文件 (加载核心配置文件,创建
SqlSessionFactory
(事务管理机制
,
数据源的配置))
3,
编写映射文件
(
将我们的需求操作转换为
sql
语句
)
4,
方法编写
(
将映射文件中的配置和方法结合起来操作
)
Session.selectOne(
“
命名空间.mapper
里面的
id”);
<configuration>
<properties resource="db.properties"></properties>
取别名:
<typeAliases>
<!--<typeAlias type="com.lovo.bean.Product" alias="product"/>-->
<!-- <typeAlias type="com.lovo.bean.User" alias=""/> -->
<!--
在包下面全部扫描
,
别名又是什么呢?与类名一致,或者类的首字母小写如
com.lovo.bean.User
别名可以是
User
或者
user-->
<package name="com/lovo/bean"/>
</typeAliases>
<!--
配置运行环境
-->
<
environments default=
”delvlopment
”>
<
environment id=
” delvlopment
”>
<transactionManager
type="JDBC">
</ transactionManager >
<!
—
配置数据源-->
<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=
”com/lovo/mapper/xxMapper.xml
”/>
</mappers>
</<configuration>
映射文件
n
amespace
:命名空间,用来管理方法的
<mapper
namespace=
”” >
<select> <update> <insert> <delete>
<!
—
如果有参数,
则需配置
parameterType ,
只能有一个参数
如果想用多个参数,我们自己去定义参数类型
parameterType
类型可以是简单的java
的数据类型,也可以实体对象
,
还可以是我们自定义的包装类
parameterType
提供了类型处理器自动将java
的数据类型转换为数据库中的字段数据类型
à
resultType:
结果集的数据类型
,
单条数据的对象类型
<select id=
”selectAll
”
parameterType=
”java.lang.String
” resultType=
”
类的全路径和别名
”
<resultMap type="Product" id="productMap">
<result property="productId" column="p_productId"/>
<result property="productImage" column="p_productImage"/>
<result property="productDesc" column="p_productDesc"/>
<result property="productPrice" column="p_productPrice"/>
</resultMap>
</mapper>
Sql
语句中的占位符
如果
parameterType =
”int
” (int string boolean double
…..)
?
在
mybatis
中
#{id} #{
名字可以任意命名
}
就像方法中的形式参数,用来接收参数传过来的值
, like ‘%${value}%
’
如果
parameterType =
”
对象类型
”
#{
对象下的属性名
}
则默认调用了
getXxx(),${
对象下的属性名
}
${}
是属于
sql
拼接的方式
+
,可能会有
sql
的注入
,
除了
like
,一般不用这种方式
三层结构中使用原始dao
层的方式去编写了持久层
(ibatis)
Mybatis
提供了
Mapper
代理接口的方式编写持久层
注意事项:
1,
只创建
Mapper
代理接口,不需要我们编写实现类
2,
代理接口的名字和映射文件的名字一一对应
,
保持一致
,
并且在同一个包中
3,
在映射文件中可以在
mapper
中加载映射文件的时候,也可以加载这个接口
Namespace
使用
Mapper
代理接口的路径(包名
.
类名)
4,
使用时是通过
session.getMapper(XxxMapper.class);
得到代理接口
想象成new UserMapperImpl()
5,
接口里的方法名要和映射文件中的
id
名一致