ningbaoer

导航

Mybatis框架

Spring SpringMVC 接下来学习

controller springmvc框架

service Spring框架


dao层用 Mybatis框架

什么是 MyBatis
MyBatis 是一款优秀的持久层框架


它支持自定义 SQL、存储过程以及高级映射。


MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。


MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。


MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了[google code](baike.baidu.com/item/google code/2346604?fromModule=lemma_inlink),并且改名为MyBatis。2013年11月迁移到Github。


1.持久层
数据持久化

持久化就是将程序的数据在持久状态和瞬时状态转化的过程
内存:断电即失
数据库(jdbc)、io文件持久化
为什么需要持久化?

不能丢掉的对象
节约内存

2.使用mybatis的原因

帮助程序员将数据存入到数据库中
方便
jdbc过于复杂,简化框架。
实现自动化
不使用框架也能写网站,但是使用框架更容易上手
优点

简单易学
灵活
sql和代码的分离,提高代码的可维护性
提供映射标签,支持对象关系组件维护
提供xml标签,支持编写动态sql


3.MyBatis开发步骤:

①添加MyBatis的坐标

②创建user数据表

③编写User实体类

④编写映射文件UserMapper.xml

⑤编写核心文件SqlMapConfig.xml

⑥编写测试类

4.插入操作注意问题

• 插入语句使用insert标签

• 在映射文件中使用parameterType属性指定要插入的数据类型

•Sql语句中使用#{实体属性名}方式引用实体中的属性值

•插入操作使用的API是sqlSession.insert(“命名空间.id”,实体对象);

•插入操作涉及数据库数据变化,所以要使用sqlSession对象显示的提交事务,即sqlSession.commit()

5.修改操作注意问题

• 修改语句使用update标签

• 修改操作使用的API是sqlSession.update(“命名空间.id”,实体对象);

6.删除操作注意问题

• 删除语句使用delete标签

•Sql语句中使用#{任意字符串}方式引用传递的单个参数

•删除操作使用的API是sqlSession.delete(“命名空间.id”,Object);

 

<!-- 配置类型简化 配置别名-->
<typeAliases>
<!-- <typeAlias type="com.msr.bean.User" alias="user"></typeAlias>-->
<!-- 默认就是实体类的小写 包扫描即可-->
<package name="com.msr.bean"/>
</typeAliases>


<!--加载映射文件-->
<mappers>

<mapper resource="com/msr/bean/UserMapper.xml"/>
<!-- 包扫描即可 -->
<!-- <package name="com.msr.bean"/>-->
</mappers>

 

 

 

MyBatis X 插件 setting 里面 plugins 下载
传统
接口 实现类

代理开发
接口 没有实现类 底层帮你生成了实现类 xml

代理开发
开发注意事项
1) Mapper.xml文件中的namespace与mapper接口的全限定名相同**

2) Mapper接口方法名和Mapper.xml中定义的每个statement的id相同**

3) Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同**

4) Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同**

 

传递参数
注解传参
@Param注解传参法
public User selectUser(@Param("userName") String name, int @Param("deptId") deptId);


Map传参法
<!-- 传递hashmap综合查询用户信息 -->
<select id="findUserByHashmap" parameterType="hashmap" resultType="user">
select * from user where id=#{id} and username like '%${username}%'
</select>


动态sql语句 if
<select id="findByCondition" parameterType="user" resultType="user">
select * from User
<where>
<if test="id!=null and id!=0">
and id = #{id}
</if>
<if test="username!=null">
and username=#{username}
</if>
</where>
</select>


动态sql语句 foreach
<select id="findByIds" parameterType="list" resultType="user">
select * from User
<where>
<foreach collection="array" open="id in(" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>


SQL片段抽取

Sql 中可将重复的 sql 提取出来,

<sql id="selectUser">
select * from User
</sql>

抽出来的代码 可以用include标签来代替
<include refid="selectUser"></include>

 

foreach标签的属性含义如下:

<foreach>标签用于遍历集合,它的属性:

collection:代表要遍历的集合元素,注意编写时不要写#{}

open:代表语句的开始部分

close:代表结束部分

item:代表遍历集合的每个元素,生成的变量名

sperator:代表分隔符

posted on 2023-06-14 18:35  宁宝儿  阅读(3)  评论(0编辑  收藏  举报