MyBatis框架基本使用

目录

一、向sql语句传参

二、数据输入

三、数据输出

四、别名


一、向sql语句传参

1.基本使用MyBatis框架

使用到的jar包如下:


    
      org.junit.jupiter
      junit-jupiter
      RELEASE
      test
    

    
      org.mybatis
      mybatis
      3.5.7
    

    
      mysql
      mysql-connector-java
      8.0.33
    

使用MyBatis需要实现一个实体类对应一张表对应一个业务接口对应一个mapper映射

其中的mapper映射相当于业务接口的实现类。只不过通过mapper.xml配置文件将Java代码和sql代码实现区分。

注意:在业务接口中定义的方法不能进行重载,因为通过xml配置时候,配置对于的方法sql语句只看方法名称。

如下:

public interface EmployeeMapper {
    //通过id查找员工
     Employee queryById(Integer id);
  
    //通过id name 查找员工
     Employee queryById(Integer id,String name);

}

由于使用了相同的方法名称,会导致在xml根据方法名称封装对于sql语句时候出现问题。

2.使用${ key } 和 #{ key }传参

案例代码:


    

    

区别:

#{key}的本质是进行占位符处理,在代码中替代id的值。【推荐使用】

${key}的本质是进行拼接字符串,在案例代码中即封装成一个完整的sql语句。

注意:使用#{key}的值代替时候,不能传入列名,容器名。

3.实现MyBatis测试功能

完成测试功能需要实现以下几个步骤

1.创建ibatis的资源类 is

2.创建SqlSessionFactoryBuilder对象并进行Build( is ) 获取SqlSessionFactory对象

3.通过SqlSessionFactory对象的openSession方法获取SqlSession

4.获取Mapper对象

5.执行对于操作

6.提交事务和关闭相关流

案例代码:

public class MybatisTest {

    @Test
    public void Test() throws IOException {
        //步骤1,读取资源
        InputStream is = Resources.getResourceAsStream("mybatisConfig.xml");
        //步骤2,创建sqlSessionFactory
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //步骤3,创建SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //步骤4,获取Mapper对象
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

        //执行对应操作
        Employee employee = employeeMapper.queryById(1);
        System.out.println(employee);
        //管理事务提交与关闭操作
        sqlSession.close();

    }
}

二、数据输入

数据输入的概念:

这里数据输入具体是指上层方法(例如Service方法)调用Mapper接口时,数据传入的形式。

  • 简单类型:只包含一个值的数据类型
    • 基本数据类型:int、byte、short、double、……
    • 基本数据类型的包装类型:Integer、Character、Double、……
    • 字符串类型:String
  • 复杂类型:包含多个值的数据类型
    • 实体类类型:Employee、Department、……
    • 集合类型:List、Set、Map、……
    • 数组类型:int[]、String[]、……
    • 复合类型:List、实体类中包含集合……

1.单个简单数据类型

MyBatis框架基本使用_第1张图片

由于只有一个简单参数,所以#{key}或者${key}中的key可以填写任意的值,当然推荐还是使用原本的参数名。

2.实体对象类型

当传入的数据是实体对象类型时候,只需要一一对应其属性即可

案例:

MyBatis框架基本使用_第2张图片

3.多个简单数据类型

当出现业务方法中有多个参数时候注意此时#{key}或者${key}中的key不能乱写,并且也不能通过形参的方式直接输入。面对多个简单数据类型的输入有两种方案解决问题。

  3.1 使用注解参数解决

需要用到@Param注解

案例:

MyBatis框架基本使用_第3张图片

  3.2使用顺序方式解决

参数还可以arg0 、arg1...的顺序进行参数匹配

案例代码:

MyBatis框架基本使用_第4张图片

4.map类型

传入key=map即可

接口对应的抽象方法

int updateEmployeeByMap(Map paramMap);

对应的sql语句



  update t_emp set emp_salary=#{empSalaryKey} where emp_id=#{empIdKey}

使用场景

有很多零散的参数需要传递,但是没有对应的实体类类型可以使用。使用@Param注解一个一个传入又太麻烦了。所以都封装到Map中。


三、数据输出

数据输出概念:

数据输出总体上有两种形式:

  • 增删改操作返回的受影响行数:直接使用 int 或 long 类型接收即可
  • 查询操作的查询结果

 我们需要做的是,指定查询的输出数据类型即可!

 并且插入场景下,实现主键数据回显示!

1.单个简单类型




    

    

 在一般的简单类型中,Java都有对应的简写,可以用String int 去取代java.lang.String等

2.返回实体类对象

返回类的全限定符加类名




   

3.返回Map类型



4.返回List类型


5.返回主键值





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

四、别名

由于输出返回值时候要填写的内容包括类的全限定符,这种操作比较麻烦,所以Java中自带了72种默认的别名,比如java.lang.String可以直接写为String等等。但是对于一般的实体对象类型是没有

1.xml设置别名

在MyBatis-config.xml中进行配置

单个起别名

案例代码:

   

        
    
    

包起别名

当在包起别名的时候,在包下所有的类的别名都对应其类名

   

         
    

2.注解别名

如果认为在xml中配置十分麻烦并且不美观,则可以在实体类中对应使用注解方式进行起别名

MyBatis框架基本使用_第5张图片


你可能感兴趣的:(SSM框架,mybatis)