栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis-01

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis-01

ORM object relation mapping(对象关系映射)

实现思想:将关系型数据库中的表记录映射成对象,通过对象进行展示

public class User{
    private Integer id;
    private String name;
    private String pwd;

}
数据库中表的数据
id   name   pwd
1    张三   123456
2    李四   123123

映射关系

类 表

对象 表的(行)记录

属性 表的(列)记录

使用mybatis

  1. 传统JDBC访问数据库

(1)使用jdbc时大量代码冗余

(2)sql写死在程序当中,当sql修改时 类重新编译

(3)sql执行后的结果resultSet对象,需要手动处理

2.mybatis

(1)对jdbc进行封装和简化

(2)sql和类分离 sql写在映射文件Mapper.xml中,当sql修改时 ,类不需要重新编译

(3)sql执行后的结果不需要手动处理,mybatis自动转换成Java对象(自动映射)

mybatis简单小Test

(1)创建maven工程,并导入jar包

​


    4.0.0

    com.chen
    mavenTestchen
    1.0-SNAPSHOT
添加依赖的方式:
通过快捷键ale+insert 进行搜索
www.mvnrepository.com
    
        
            junit
            junit
            4.9
        
        
            org.mybatis
            mybatis
            3.5.9
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
            org.slf4j
            slf4j-log4j12
            1.7.36
        
    


​

(2)进行mybatis-config的文件配置




    
可以有多个environment  当需要用到其他的时候进行更换(通过id)
        
进行事务管理的方式:
可以通过JDBC代理
MANAGER 自己管理事务
            
配置数据源:
连接池  JNDI:过时了
POOLED 使用连接池
UNPOOLED 不适用连接池
            
这里其中的 name 和 value 不要写错
                
                
                
                
            
        
    
mapper文件导入当有多个的时候 可以通过多个mapper标签导入  ./表示当前目录 可以省略
    
        
    
 

(3)进行mapper文件的配置



namespace 和 select 中的 id 命名随意 但不能重复

resultType指定的结果返回到什么对象的类型中
    
 

(4)pojo类和test类准备

package com.chen.pojo;

public class User {
    private Integer id;
    private String name;
    private String job;
    private Double salary;
alt+insert 快速生成get和set方法 toString方法
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", job='" + job + ''' +
                ", salary=" + salary +
                '}';
    }
}
package com.chen.test;

import com.chen.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.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class EmpTest {

//这里通过@Test进行运行  导包都为org.apache.ibatis 下
    @Test
    public void selectAll() throws IOException {
//读取配置文件 通过io流  这里可以通过.var快速生成
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//通过配置文件生成sqlSessionFactory工厂 
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//通过工厂生成sqlSession 对象
        SqlSession ss = ssf.openSession();
//通过对象进行sql语句的操作
        List list = ss.selectList("EmpMapper.selectEmp");
        for (Emp e:list){
            System.out.println(e);
        }


    }
}


 mybatis执行流程

1.先读取配置文件      mybatis-config.xml    EmpMapper.xml 这里进行两个读取

2.通过配置文件创建sqlSessionFactory工厂

3.通过工厂创建sqlSession对象(连接数据库)

4.通过对象执行sql语句 namespace+id 进行sql定位

(1)找到mapper文件和找到要执行的sql语句

(2)执行sql语句 指定返回的结果用什么类型封装

(3)将数据记录到封装的对象(这里通过pojo中的set方法进行)

(4)最后返回List泛型  

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号