相关概念介绍
SSM = springmvc + spring + mybatis 组合框架的一员,是一种持久层框架
Mybatis常用API:
1.Resources工具类帮助加载核心配置文件
2.SqlSessionFactoryBuider.bulid();构建工厂对象
3.SqlSessionFactory.openSession([boolean autoCommit]);获取sqlSession会话对象
4.sqlSession.增/删/改/查/commit/rollback
Mybatis代理开发方式需要遵循的规范
1.Mapper.xml映射文件中的namespace与mapper接口的全限定名相同
2.Mapper接口方法名和mapper.xml映射文件中定义的每个statement的id相同
3.Mapper接口方法的输入参数类型和mapper.xml映射文件中定义的每个sql的parameterTyp的类型相同
4.mapper接口方法的输出参数类型和mapper.xml映射文件中定义的每个sql的resultType的类型形同
这样就可以调用sqlSession.getmapper(xxxMapper.class)来获取mapper代理对象,使用接口中的方法
高级查询: ResultMap
<!--实现手动映射封装
resultmap
id="userResultmapper" 此标签唯一标识 type="user" 封装后的实体类型
<id column="uid" property="id"> </id>
uid--表中的字段名
id-- user实体类属性名
表中主键字段的封装--如果表中数据和实体类参数名不同--起别名
<result column="name" property="username"></result> 表中普通字段封装 column="name" 表中的字段名
property="username" user实体的属性名-->
<resultMap id="userResultmapper" type="article">
<id column="uid" property="id">
</resultMap>
模糊查询
<!--
List<User> list = userMapper.findByUsername("%王%");
--><!--方式1-->
<select id="findByUsername" parameterType="string" resultType="user">
select * from user where username like #{username}
</select>--parameterType="string"可以省略
¥{}与#{}的区别
#{}:表示一个占位符号
通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。
#{}可以接收简单类型值或pojo属性值。
如果parameterType传输单个 简单类型值,#{}括号中名称随便写。
${}:表示拼接sql串
通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,会出现sql注入问题。
${}可以接收简单类型值或pojo属性值。