一 Mybatis 基于ORM 数据 持久层框 半自动的映射操作
帮助咱们 实现 对象 和 数据集 的映射 但需要自己手动写sql 语句
灵活 易用 高效
二 . Mybatis 框架 的 使用
1.导入包 mybatis-3.1.1.jar
配置文件 核心文件 sql-config.xml jdbc 连接 或者 池
映射文件 mapper 增删改查 的 sql 语句
2.基本使用 演示
核心 类
SqlSessionFactoryBuilder
SqlSessionFactory
SqlSession
增删改查
增加
xxMapper.xml 中 添加 sql
<insert id="addProvince" parameterType="com.pojo.Province" >
insert into province (pid,pname) values(${pid},#{pname})
</insert>
Province p=new Province();
p.setPid(2);
p.setPname("嘻嘻嘻");
sqlSession.insert("com.pojo.Province.addProvince",p);
sqlSession.commit();
${} 和#{} 区别 ${} 属于 statement 是 sql 拼接 取值时 从属性 取值
#{} 属于 preparedStatement 是预处理方式 取值时 比较随意
起别名
查询
<select >
select * from xxx where 条件
</select>
绑定 dtd 文件 可以出提示
Mybatis 框架
mybatis 半自动 自己写 sql xml
hibernate 全自动 基本不用写 sql hql 注解形式 @
SqlSessionFactoryBuilder 类
SqlSessionFactory 接口 工厂类
SqlSession 接口 增 insert("sqlid",对象值); 删delete("sqlid",对象值)
改 update("sqlid",对象值);
查 selectList("sqlid",对象值); 以集合形式返回
selectOne("sqlid",对象值); 以对象形式 返回
selectMap(); 以 key-value 对形式 返回
ResultMap 节点
自定义的映射 结果
通常 配置 1对多 或多对一 ,列名和 属性名不符 使用
注意 指定对应关系后 默认的 列名 和属性的对应关系 不起作用
关系型数据库
省 市 区
1 多
1 多
Province
多个市
private List cs;
City
Province
<resultMap > 作用 1对多 多对一 映射
<result> 列 和 属性的 映射
<collection property="list集合的属性" select="根据省id 查询city 的sqlid"
column="pid" >
完成 1对多的 查询
查 省 根据 省的id 到 city 表中 查询 多对一
mapper 接口 方式 常用方式
通过 mybatis 生成 接口的 动态代理类 实现 方法 和 sqlid 的 一一映射
注意的 是1. mapper.xml 文件中的 namespace 要与接口的 全路径保持一致
2. 接口中的方法 需要与 xml 中的 sql id 保持一致 方可使用
反向工程