mybatis数据输出-insert操作时给非自增列的主键生成值

1、建库建表(非自增长主键)

CREATE DATABASE `mybatis-example`;
 
USE `mybatis-example`;
  
create table emp
(
    empNo   varchar(40)  null,
    empName varchar(100) null,
    sal     int          null,
    deptno  varchar(10)  null
);

mybatis数据输出-insert操作时给非自增列的主键生成值_第1张图片

2、pom.xml

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

3、Emp.java

package com.atguigu.mybatis.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private String empNo;
    private String empName;
    private Integer sal;
    private String deptno;
}

4、EmpMapper.java

package com.atguigu.mybatis.mapper;
import com.atguigu.mybatis.pojo.Emp;
public interface EmpMapper {

    //演示在insert操作时给非自增列的主键生成值
    void addEmp(Emp emp);
}

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




 
    
    
    
    
    
    
        
    
 
    
        
        
    
 
    
    
        
        
            
            
            
            
                
                
                
                
                
            
        
    
 
    
        
        
        
        
        
    
 

6、EmpMapper.xml






    
        
            select UUID()
        
        insert into emp values(#{empNo},#{empName},#{sal},#{deptno})
    

7、MybatisTest.java

package com.atguigu.mybatis;
import com.atguigu.mybatis.mapper.EmpMapper;
import com.atguigu.mybatis.pojo.Emp;
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;
public class MybatisTest {

    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();
        //基于Mapper接口编程
        empMapper = sqlSession.getMapper(EmpMapper.class);
    }

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

    @Test
    public void test01() {
        Emp emp = new Emp();
        emp.setEmpName("张三丰");
        emp.setSal(500);
        emp.setDeptno("d001");
        empMapper.addEmp(emp);
    }
}

mybatis数据输出-insert操作时给非自增列的主键生成值_第2张图片

 8、select UUID()

Universally Unique Identifier,即通用唯一标识符

     "select UUID()" 是一个 SQL 语句,用于从数据库中获取一个唯一的标识符(UUID)。UUID 是通用唯一标识符的缩写,它是一个 128 位长的数字,通常用于在分布式系统中唯一标识对象。

     在大多数数据库管理系统中,UUID 是通过使用特定的函数或方法生成的。具体的生成方式可能因数据库而异,但通常会使用随机数、时间戳和其他信息来生成一个唯一的 UUID。

     在 SQL 中,可以使用特定的函数来生成 UUID。例如,在 MySQL 中,可以使用 UUID() 函数来生成 UUID。在其他数据库管理系统中,可能会有类似的函数或方法。

以下是一个示例,展示了如何在 MySQL 中使用 "select UUID()" 来获取一个 UUID:

SELECT UUID();

执行上述语句后,数据库将返回一个唯一的 UUID,例如:550e8400-e29b-41d4-a716-446655440000。

你可能感兴趣的:(MyBatis,mybatis,mapper,namespace,insert,selectKey,keyProperty,order)