mybatis数据输入-Map类型参数输入

1、建库建表

CREATE DATABASE `mybatis-example`;
 
USE `mybatis-example`;
 
CREATE TABLE `t_emp`(
  emp_id INT AUTO_INCREMENT,
  emp_name CHAR(100),
  emp_salary DOUBLE(10,5),
  PRIMARY KEY(emp_id)
);
 
INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("tom",200.33);
INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("jerry",666.66);
INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("andy",777.77);

2、pom.xml

    
        
            org.mybatis
            mybatis
        
 
        
        
            mysql
            mysql-connector-java
        
 
        
        
            org.junit.jupiter
            junit-jupiter-api
        
 
        
            org.projectlombok
            lombok
        
    

3、Employee.java(pojo)

package com.atguigu.mybatis.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
    private Integer empId;
    private String empName;
    private Double empSalary;
}

4、EmpMapper.java

package com.atguigu.mybatis.mapper;
import com.atguigu.mybatis.pojo.Employee;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
public interface EmpMapper {

    void addEmp(Employee employee);

    void addEmp2(@Param("ename") String ename, @Param("esalary") Double esalary);

    void addEmp3(Map params);
}

5、mybatis-config.xml(mybatis的总配置文件)




 
    
    
        
        
            
            
            
            
                
                
                
                
                
            
        
    
 
    
        
        
        
        
        
    
 

6、EmpMapper.xml






    
    
    
        
        insert into t_emp values(0,#{empName},#{empSalary})
        
    

    
    
        insert into t_emp values(0,#{ename},#{esalary})
        
        
    

    
    
        insert into t_emp values(0,#{ename},#{esalary})
    

7、MybatisTest3.java

package com.atguigu.mybatis;
import com.atguigu.mybatis.mapper.EmpMapper;
import com.atguigu.mybatis.pojo.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
public class MybatisTest3 {
    SqlSessionFactory sqlSessionFactory;
    SqlSession sqlSession;
    EmpMapper empMapper;

    @BeforeEach
    public void setup() throws IOException {
        // 获取资源流,读取"mybatis-config.xml"文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        // 使用资源流创建SqlSessionFactory
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 使用SqlSessionFactory打开一个Session
        sqlSession = sqlSessionFactory.openSession();
        // 使用Session获取EmpMapper的Mapper对象
        empMapper = sqlSession.getMapper(EmpMapper.class);
    }

    // 在每个测试用例之后执行的清理方法
    @AfterEach
    public void teardown() {
        sqlSession.commit();  // 提交事务
        sqlSession.close();  // 关闭SqlSession
    }

    @Test
    public void addEmpTest() {
        Employee employee = new Employee(0, "鸠摩智", 8080.0);
        empMapper.addEmp(employee);
    }

    @Test
    public void addEmpTest2() {
        empMapper.addEmp2("赵敏", 999.9);
    }

    @Test
    public void addEmpTest3() {
        empMapper.addEmp3(Map.of("ename","张三丰","esalary",1000.0));
    }
}

 mybatis数据输入-Map类型参数输入_第1张图片

 8、Map.of()

  Map.ofJava 9 中引入的一个新方法,用于创建一个不可变的Map。它接受一组键值对,并将它们放入一个Map中。这个Map是不可变的,也就是说,一旦创建,就不能再添加或删除键值对。

     这个方法提供了一种方便的方式来创建一个不可变的Map,而不需要手动创建一个新的Map实例并手动添加键值对。它还可以帮助避免在代码中出现一些常见的错误,比如在创建Map后不小心修改了它。

下面是一个使用Map.of创建Map的示例:

Map map = Map.of("a", 1, "b", 2, "c", 3);

这将创建一个包含三个键值对的Map,键的类型为String,值的类型为Integer。这个Map是不可变的,因此不能添加或删除键值对。

    Map.of()是在Java 9中引入的方法,用于创建不可变的Map对象。它的作用是提供一种更简洁、更直观的方式来创建小型的、不可变的Map对象,而不需要使用传统的构造函数。

    Map.of()方法接受若干个键值对作为参数,在执行时会自动创建一个不可变的Map对象并返回。例如:

Map map = Map.of("one", 1, "two", 2, "three", 3);

上述代码将创建一个包含三个键值对的不可变Map对象,其中键为"one"、"two"、"three",值为1、2、3。

    需要注意的是,Map.of()方法创建的Map对象是不可修改的,即调用put()、remove()等修改Map对象的方法会抛出UnsupportedOperationException异常。因此,如果需要修改Map对象,还是需要使用传统的构造函数来创建可修改的Map对象。

 

你可能感兴趣的:(MyBatis,mybatis,insert,mappers,mapper,Resources,SqlSession,getMapper)