Mybatis 详解

Mybatis作用

简化dao层开发,通过简单的XML或注解来配置和映射原生信息,从而避免了许多繁琐的JDBC代码和手动设置参数以及获取结果集。 上手还快

使用

1.导入依赖

使用spring容器管理mybatis的话 我们需要导入springframe依赖和mybatis依赖 后续的根据需求自行添加

<dependencies>
  <!-- mybatis依赖 -->
  <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.11</version>
  </dependency>

  <!-- MySQL驱动 mybatis底层依赖jdbc驱动实现,本次不需要导入连接池,mybatis自带! -->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.25</version>
  </dependency>

  <!--junit5测试-->
  <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.3.1</version>
  </dependency>
</dependencies>

2.书写对应的接口

实体类准备
package com.ssmLearn.pojo;

import lombok.Data;

/**
 * @Title: Employee
 * @Author 小菜蛋
 * @Date 2024-03-03 19:34
 * @description: 员工类
 */
@Data
public class Employee {
    private int empId;
    private double empSalary;
    private String empName;
}
接口准备
package com.ssmLearn.mapper;

import com.ssmLearn.pojo.Employee;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @Title: EmpMapper
 * @Author 小菜蛋
 * @Date 2024-03-03 19:34
 * @description: 员工操作接口
 */
public interface EmpMapper {
    public List<Employee> queryAll();
}
配置文件准备
Myabtis配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- environments表示配置Mybatis的开发环境,可以配置多个环境,在众多具体环境中,使用default属性指定实际运行时使用的环境。default属性的取值是environment标签的id属性的值。 -->
    <environments default="development">
        <!-- environment表示配置Mybatis的一个具体的环境 -->
        <environment id="development">
            <!-- Mybatis的内置的事务管理器 -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据源 -->
            <dataSource type="POOLED">
                <!-- 建立数据库连接的具体信息 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis-example"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- Mapper注册:指定Mybatis映射文件的具体位置 -->
        <!-- mapper标签:配置一个具体的Mapper映射文件 -->
        <!-- resource属性:指定Mapper映射文件的实际存储位置,这里需要使用一个以类路径根目录为基准的相对路径 -->
        <!--    对Maven工程的目录结构来说,resources目录下的内容会直接放入类路径,所以这里我们可以以resources目录为基准 -->
        <mapper resource="mapper/EmpMapper.xml"/>
    </mappers>

</configuration>
Mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssmLearn.mapper.EmpMapper">

    <select id="queryAll" resultType="com.ssmLearn.pojo.Employee">
        select emp_id empId,emp_name empName ,emp_salary empSalary from t_emp;
    </select>
</mapper>

注意映射文件要和mapper接口文件保持目录一致
在这里插入图片描述

测试类

import com.ssmLearn.mapper.EmpMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import java.io.IOException;

/**
 * @Title: TestMybatis
 * @Author 小菜蛋
 * @Date 2024-03-03 19:39
 * @description: 测试mybatis的操作是否成功
 */
public class TestMybatis {

    @Test
    public void testQueryAll() throws IOException {
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-config.xml")).openSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
        System.out.println(empMapper.queryAll());
    }
}

SQL传参地不同

参数传递有两种形式一种时#{参数}一种时${参数} 其中#{参数}这种方式会更加安全,使用#参数传递地形式地话 会在sql语句中在参数地位置生成占位符,可以有效地防止sql注入。
使用方法
举例使用

<delete id="方法名" >
	delete from table_name where id = #{id}
</delete>

规范1.mapper层不允许对方法进行重载 我们需要知道的是mapper层的Java代码是通过xml文件映射实现的具体功能,其中xml文件映射对应功能的时候是按照方法名进行对应的,那么当进行方法的重载的时候会出现无法匹配现象这是不允许的。

mapper如何接受不同类型的参数传递

1.单个简单类型的传递 (基本类型的数据传递)

直接将参数名填写到对应的sql语句位置即可

2.实体类型的参数传递

实体类型的参数传递的时候当我们需要使用到某一属性的时候 我们可以直接在sql语句中使用这个属性 ,只需要按照Java的实体类中的属性名称进行填写即可使用该属性的内容
例如:

public class Dog{
	private int idDog;
	private String nameDog;
	private int ageDog;
}

当我需要根据狗的id进行更新操作的时候使用mybati操作编写xml映射文件 然后编写对应的sql语句

<update>
update table_name set name = #{nameDog},age=#{ageDog} where id = #{idDog}
</update>

3.零散简单数据类型

当使用的mapper接口中有两个或以上的参数的时候,我们可以直接使用#{参数}的形式进行参数的传递,当使用的参数姓名和数据的字段名不同时,我们可以使用注解@Param修改注解中的属性value进行起别名的形式,或者时使用数据库sql语句中对数据库中的字段名起别名使得形式保持一致

4.传入map形式的参数类型

比如说Map<String,int> parge ,当我们想要使用参数的时候 只需要直接填写对应的键即可使用这个参数中的值
注意注解@Param的使用 该注解可以对传入mapper层接口中的参数在xml文件映射的时候做到对应 即@Param(“name”) String Username
编写xml文件的时候就只可以使用name进行参数的传递

返回值类型

返回值的填写是在标签中的resultType中进行填写这个内容的 一般是使用

1.普通类型的返回值

直接填写对应的类型 比如说String类型的数据,使用mybatis书写的时候使用返回的话 可以直接指定resultType = “string”,Mybatis 内部给常用的数据类型设定了很多别名。 以 int 类型为例,可以写的名称有:int、integer、Integer、java.lang.Integer、Int、INT、INTEGER 等等。

2.实体类对象的返回

实体类型的数据进行返回的时候需要指定返回类型的全类名的引用路径,或者是在xml配置文件中使用别名的形式进行替换。

3.集合类型的数据返回

集合类型的数据进行返回的时候只需要直接将集合中的引用类型的全类名填写到resultType的位置即可,不需要额外添加其他内容。

4.返回主键值

应用场景:当我们的网站中需要进行数据库操作 向数据库中添加一个用户的时候,添加成功之后我们需要将这个用户的信息返回到前端时,我们需要根据用户的id进行sql查询 ,将查询成功后的用户类传递到前端。此时我们可以使用主键返回,利用插入之后返回的主键来搜索这个刚插入的用户的信息

主键回显

主键回显 就是得到插入数据库中的信息在数据库中的主键值,这个一般根据数据表的创建进行设置是那种类型的增加
使用方式
需要在xml映射文件对应的标签上加入属性 userGenerateKeys = “true” 这个意味着使用数据库的自增长类型的主键,KeyColumn = “需要返回的内容在数据库中的字段名、列名” KeyProperty = “对应返回主键在Java实体类中的属性名”
当添加这三个属性之后我们就可以在Java代码中使用主键返回的内容了
例如:

public voide demo(){
	int row = mapper.insert(user);
	//直接返回即可 row就是需要的内容
}

  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值