java-mybatis01

对象/关系映射ORM

ORM完成面向对象的编程语言DAO关系数据库的映射后,开发人员可以利用面向对象设计语言的建议易用性,也可利用关系数据库的技术优势。

ORM把关系数据库包装成面向对象的模型,采用ORM框架后,应用程序不再直接访问底层数据库,而是以面向对象的方式来操作持久化对象,而ORM框架则将这些面向对象的操作转换成底层SQL。

把持久化对象的保存、修改、删除等操作转换为对数据库等操作。

工作机制(CRUD)

  • 增(create):将一个对象插入到数据库表这种。
  • 删(delete):删除对象,并从数据库中移除对应的记录。
  • 改(update):修改对象的属性,并更新数据库中的记录。
  • 查(read):根据查询条件查询数据库,返回对应的对象。

ORM的映射关系

  • 一对一:一个对象对应数据库表中的一行。
  • 一对多:一个对象对应数据库表的多条记录。
  • 多对多:多个对象之间有多个关系,通常需要用中间表来进行关联。

常用ORM框架-mybatis

mybatis不完全采用对象映射方式,允许编写sql语句,并使用映射文件来进行对象映射。

MyBatis 是一款优秀的 基于 ORM 的半自动轻量级持久层框架,它支持定制化的 SQL、存储过程以及高级映射,MyBatis 避免了几乎所有 JDBC 代码和手动设置参数以及获取结果集。

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

mybatis优势

mybatis是一个半自动化持久层框架。优势有:

  1. 灵活性高,支持原生SQL:可以中映射文件中编写sql。
  2. 避免了ORM的性能开销:mybatis提供对sql的手写控制,减少了开销。
  3. 支持动态SQL:能够根据条件动态的生成sql语句,通过等标签,灵活的构建。
  4. 简洁的映射机制
  5. 支持复杂的查询:可以多表连接,子查询,嵌套查询等。避免了ORM框架中复杂查询等性能损失。
  6. 简化了数据库事务处理:结合spring等框架的事务处理,轻松实现对数据库事务的控制,可以自动开启、提交和回滚事务,确保数据一致性和可靠性。
  7. 跨数据库支持

应用

  1. 平常开发大部分都是结合spring来使用的 引入mybatis的pom文件
java 复制代码
<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <!--mysql驱动坐标-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
            <scope>runtime</scope>
        </dependency>

2.常用的标签为:

  • select:查询语句
  • insert:插入语句
  • update:更新语句
  • delete:删除语句

3.xml文件

java 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.BasicSysUserMapper">
    <!-- 查询单个用户信息 -->
    <select id="selectOne" parameterType="java.lang.String" resultType="model.BasicSysUser">
        SELECT
            *
        FROM
            user_info
        WHERE
            username = #{username}
    </select>
    <!-- 查询所有用户信息 -->
    <select id="selectList" resultType="model.BasicSysUser">
        SELECT
            *
        FROM
            user_info
    </select>
     <insert id="insertBasicSysUser"
            parameterType="model.BasicSysUser">
        insert into
        basic_sys_user(
        <trim prefix="" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="userName != null">
                user_name,
            </if>
            <if test="realName != null">
                real_name,
            </if>
           
        </trim>
        )
        values(
        <trim prefix="" suffixOverrides=",">
            <if test="id != null">
                #{id},
            </if>
            <if test="userName != null">
                #{userName},
            </if>
            <if test="realName != null">
                #{realName},
            </if>
           
        </trim>
        )
    </insert>
  <update id="updateBasicSysUser"
            parameterType="model.BasicSysUser">
        update
        basic_sys_user
        <set>
            <if test="id != null">
                id=#{id},
            </if>
            <if test="userName != null">
                user_name=#{userName},
            </if>
            <if test="realName != null">
                real_name=#{realName},
            </if>
        </set>
        <where>
            <if test="userName != null">
                and user_name=#{userName}
            </if>
            <if test="id != null">
                and id=#{id}
            </if>
        </where>
    </update>
  <!-- 删除 -->
    <delete id="deleteBasicSysUser"
            parameterType="model.BasicSysUser">
        delete
        from
        basic_sys_user
        <where>
            <if test="userName != null">
                and user_name=#{userName}
            </if>
            <if test="id != null">
                and id=#{id}
            </if>
        </where>
    </delete>
</mapper>

4.对应的mapper文件

java 复制代码
// 查询列表
    List<BasicSysUser> selectList(BasicSysUser basicSysUser);
    // 新增
      int insertBasicSysUser(BasicSysUser basicSysUser);
      // 更新
          int updateBasicSysUser(BasicSysUser basicSysUser);
      // 删除
         int deleteBasicSysUser(BasicSysUser basicSysUser);
相关推荐
风象南5 分钟前
SpringBoot 控制器的动态注册与卸载
java·spring boot·后端
醇醛酸醚酮酯24 分钟前
Qt项目锻炼——TODO清单(二)
开发语言·数据库·qt
我是一只代码狗32 分钟前
springboot中使用线程池
java·spring boot·后端
hello早上好1 小时前
JDK 代理原理
java·spring boot·spring
PanZonghui1 小时前
Centos项目部署之Java安装与配置
java·linux
GreatSQL社区1 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根1 小时前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql
weixin_438335401 小时前
基础知识:mysql-connector-j依赖
数据库·mysql
沉着的码农1 小时前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
小明铭同学1 小时前
MySQL 八股文【持续更新ing】
数据库·mysql