首页 > 其他分享 >Mybatis框架

Mybatis框架

时间:2023-06-14 18:45:24浏览次数:45  
标签:xml 语句 框架 标签 MyBatis sql Mybatis id

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:代表分隔符

标签:xml,语句,框架,标签,MyBatis,sql,Mybatis,id
From: https://www.cnblogs.com/ningbaoer/p/17481093.html

相关文章

  • 超强新框架,引领Android开发新时代.
    2019年,Compose在GoogleIO大会横空出世,大家都议论纷纷,为其前途堪忧。今年7月Compose1.0的正式发布,却让大家看到了Google在推广Compose上的坚决,这也注定Compose会成为UI开发的新风向。为什么要用Compose?师兄Flutter大行其道,Compose这个师弟又有什么让人选择它的理由呢?其实二者实现......
  • SSM各框架使用及整合
    spring常用注解 配置文件说明<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context=&quo......
  • 使用Mybatis生成树形菜单-适用于各种树形场景
    开发中我们难免会遇到各种树形结构展示的场景。比如用户登录系统后菜单的展示,某些大型购物网站商品的分类展示等等,反正开发中会遇到各种树形展示的功能,这些功能大概处理的思路都是一样的,所以本文就总结一下树形结构的代码生成,在开发的时候套用这种结构就可以了。好了正文开始,首先......
  • MyBatisPlus_动态更新
    场景:项目整合了mybatisplus,进行update更新,前端传值为空时,数据库也进行了更新,导致原来的值丢失。解决方案:在实体类上使用@TableField注解/*联系人手机号码*/@TableField(updateStrategy=FieldStrategy.NOT_EMPTY)privateStringphone;这样,当前端传过来的phone参数为......
  • 基于SpringBoot+MyBatis+Thymeleaf的学生管理系统搭建
    学生管理系统Maven工程搭建【步骤】:打开IDEA工具,选择创建一个新工程。选择SpringInitializr,点击Next按钮。大家也可以通过Spring提供的在线创建的方式创建工程,访问(https://start.spring.io),然后将创建后的工程代码zip包解压后,使用IDEA导入工程。这种方式不在本文描述......
  • jexcel_最简单的框架
    1. 固定数据的jexcel框架<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="test.aspx.cs"Inherits="web_page_ssc_test"%><!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><......
  • 案例4 基于Excel的接口测试框架
    简单版读取以下格式excel(仅第一张Sheet),逐个发送接口,断言接口返回200,并将状态及错误信息写回Excel已知:Excel中接口编写格式规范如下url如果有查询参数,要写到url中,例如?a=1&b=2如果需要添加自定义请求头按key:value格式编写,:左右允许有空格,每行一个请求数据支持表单和JSO......
  • SSM框架学习之Spring浅谈(二)
    Spring常用注解@Controller:对应SpringMVC控制层,主要用户接受用户请求并调用Service层返回数据给前端页面。@Service:对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层。@Component:通用的注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪个层,可以使用@......
  • ASP.NET Core 6框架揭秘实例演示[38]:两种不同的限流策略
    承载ASP.NET应用的服务器资源总是有限的,短时间内涌入过多的请求可能会瞬间耗尽可用资源并导致宕机。为了解决这个问题,我们需要在服务端设置一个阀门将并发处理的请求数量限制在一个可控的范围,即使会导致请求的延迟响应,在极端的情况会还不得不放弃一些请求。ASP.NET应用的流量限制......
  • 微服务框架的学习路线
    一、微服务的大体架构二、微服务的学习路线 参考:1、微服务架构是什么?有哪些优点和不足? ......