Mybatis学习笔记

一、中文学习文档链接地址

  https://mybatis.org/mybatis-3/zh/getting-started.html

二、准备

  1. 要使用myBatis,要导入两个依赖,一个是myBatis包,一个是myBatis驱动包。
        
        
            mysql
            mysql-connector-java
            8.0.20
        
        
        
            org.mybatis
            mybatis
            3.2.6
        

或者


       org.mybatis.spring.boot
       mybatis-spring-boot-starter
       2.2.2

  1. 数据库URL:
jdbc:mysql://localhost:3306/stu?useSSL=true&useUnicode=true&serverTimezone=GMT
  1. XML文件里的结果集映射
 

    
     
    
    



4.MybatisUtil工具类

public class MybatisUtil {
    private static SqlSessionFactory factory = null;
    
    static {
        String config = "mybatis.xml";
         try{
              InputStream inputStream = Resource.getResourceAsStream(config);
              factory = new SqlSessionFactoryBuilder().build(inputStream);
          }catch(IOException e){
              e.printStackTrace();
          } 
    }

    public static SqlSession getSqlSession(){
        SqlSession session = null;
        if(factory != null){
            factory.openSession();
        }
        return session;
    }
}
  1. 分页



\\Dao层方法:
List findAllMap(Map map);

测试:
public class MyTest {
    public static void main(String[] args) {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
//        List userList = mapper.findAll();
//        for (User user :
//                userList) {
//            System.out.println(user);
//        }
        HashMap map = new HashMap();
        map.put("startIndex",2);
        map.put("pageSize",4);
        List userList = mapper.findAllMap(map);
        for (User user :
                userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}
  1. 多对一
    第一种:



  
        
        


第二种:



        
        
        
            
        

第三种分部:

// mapper层:
// 通过分步查询员工以及员工所对应的部门信息
// 分步查询第一步:查询员工信息
Emp getEmpAndDeptByStepOne(@Param("uid")String uid);
// 分步查询第二步:查询部门信息
Dept getEmpAndDeptStepTwo(@Param("did")String did);

// mapper.xml:

  
  
  // 不是驼峰命名的属性可以不写,它自动就映射了
  
  
  // 这里的dept是Emp实体类中的属性,类型为Dept
  



  1. 模糊查询
    (1) Java代码执行的时候,传递通配符 % %
  List userList = mapper.getUserLike("%李%"); //查询姓李的人

(2) 在sql拼接中使用通配符!

  select * from user where name like "%" #{value} "%";

8.关于 “#” 和 “$” 的使用
因为 “$” 不是安全的,会造成sql注入,所以一般查询条件使用 “#”,后者是直接将字符串原模原样映射到sql语句中的,例如:

传的参数是:
public User getUser(int id);

写的sql语句是:


实际上输出的sql语句是:
select * from user order by id desc

所以我们可以把它用于动态给数据库表复制,比如:

传的参数是:
public User getUser(int id);

写的sql语句是:


实际上输出的sql语句是:
select * from user order by id desc

9、新增数据之后自动获取数据主键

// 说明:
// useGenerateKeys:开启自动获取主键功能
// keyProperty:将获取的主键用什么属性接收(获取主键id,肯定是用id来接收了)

你可能感兴趣的:(Mybatis学习笔记)