Mybatis入门

本文介绍了Mybatis的基础知识,包括其特点、环境搭建步骤、操作步骤和注意事项。重点讲解了如何使用Mybatis进行数据库操作,如配置SqlSessionFactoryBuilder、SqlSession对象的创建和释放,以及动态代理的概念和应用。此外,还强调了parameterType和resultType的使用细节,以及在配置文件和映射文件中的关键设置。
摘要由CSDN通过智能技术生成

Mybatis介绍

  1. Mybatis是什么?
    Mybatis本是apache上的一个开源框架iBatis,是一个基于java的持久层框架。
  2. Mybatis有什么特点?
  • 最简单安装,只需要两个jar文件+配置几个sql映射文件
  • sql写在xml里,便于统一管理和优化
  • sql和代码的分离,提高了可维护性
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql

Mybatis环境搭建

  1. mybatis下载
  2. 导入jar包
  3. 导入jar包log4j.properties

Mybatis操作步骤

  1. mybatis开发流程
  • 创建SqlSessionFactoryBuilder对象
  • 加载SqlMapConfig.xml配置文件
  • 创建SqlSessionFactory对象
  • 创建SqlSession对象
  • 执行SqlSession对象执行查询,获取User
  • 打印结果
  • 释放资源

Mybatis操作-使用注意事项

  1. parameterType和resultType
    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中
    resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中
    注意:
    parameterType一般可以省略不写
    resultType不能省略不写!!!
  2. selectOne和selectList
    selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常
    selectList可以查询一条或多条记录

动态代理

  1. 动态代理是什么?
    动态,顾名思义就是不固定。动态代理是由SqlSession为我们写实现类,我们只需要创建接口以及编辑接口中的方法,无需自己写实现类实现抽象方法。并且,不同的接口,同一个SqlSession能为我们写不同的实现类。只是SqlSession帮我们写实现类的时候,用的不是实现接口,而是代理。因为一个SqlSession可以根据不同的接口,写不同的代理类,所以叫做动态代理。
  2. 动态代理的步骤
  • 配置mybatis环境(见上方Mybatis环境搭建)
  • 创建SqlSessionUtil类,获取SqlSession的类
package util;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class SqlSessionUtil {
   
    private static SqlSessionFactory sqlSessionFactory;
    static {
   
        InputStream inputStream = SqlSessionUtil.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    }
    public static SqlSession getSession() {
   
        return sqlSessionFactory.openSession();
    }
}
  • 创建需要被代理的接口
package dao;

import bean.User;

import java.util.List;

public interface UserDao {
   
    List<User> selectByName(String s);

    void insertUser(User s);

    void deleteById(String s);

    void updateUser(User user);
}

  • 创建测试类,测试开发
  • 在resources底下,创建与接口位置一样的包名,建立与接口同名的xml文件(包和名字都必须相同,不让代理类实现方法的时候会找不到)
    在这里插入图片描述
  • 通过SqlSession的getMapper方法将接口的类传入进去,代理出一个实现类
		SqlSession sqlSession = SqlSessionUtil.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
  • 调用在接口中的抽象方法,配置xml实现数据库的增删查改
		List<User> list = userDao.selectByName("l%");
        for(User user:list){
   
            System.out.println(user);
        }
        sqlSession.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值