MyBatis(1)-基本操作

1.数据库新建person表


数据库person

2.步骤

目录结构
目录结构.png

1)导入jar包
2)配置核心xml文件,开发环境及数据库相关信息,及mapper映射文件位置

3)配置映射文件XXXMapper.xml,主要是命名空间,操作语句
4)通过构建SqlSessionFactory获取SqlSession对象,然后通过使用SqlSeesion对象调用对应的方法实现数据库操作。
3.操作
1)引入相关MyBatis及MySQL连接Jar包及JUnit4包


相关jar包

2)新建Person实体类
package com.capgemini.entity;

/**
 * 实体类
 */
public class Person {
    private Integer id;
    private String name;
    private Integer age;

    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 Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

3)MyBatis核心配置文件sqlMapperConfig.xml配置





    
    
        
            
            
            
             
                
                
                
                
            
        
    

    
    
        
        
    

4)映射文件PersonMapper.xml配置





    
    

    
    
        INSERT INTO person(id,name,age) VALUES (#{id},#{name},#{age})
    

    
    
        UPDATE person SET name = #{name},age = #{age}
        WHERE id = #{id}
    

    
    
        DELETE person WHERE id = #{id}
    

5)测试

package com.capgemini.test;

import com.capgemini.entity.Person;
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 TestMyBatis {
    @Test
    public void Test01() throws IOException {
        /**
         *  1、获得 SqlSessionFactory
         *  2、获得 SqlSession
         *  3、调用在 mapper 文件中配置的 SQL 语句
         */
        String resource = "sqlMapperConfig.xml";           // 定位核心配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    // 创建 SqlSessionFactory

        SqlSession sqlSession = sqlSessionFactory.openSession();    // 获取到 SqlSession

        // 调用 mapper 中的方法:命名空间 + id
        List personList = sqlSession.selectList("com.capgemini.mapper.PersonMapper.findAll");

        for (Person p : personList){
            System.out.println(p);
        }
    }
    @Test
    public void Test02() throws IOException {
        String resource = "sqlMapperConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    // 创建 SqlSessionFactory

        SqlSession sqlSession = sqlSessionFactory.openSession();    // 获取到 SqlSession

        Person person = new Person();
        person.setId(2);
        person.setName("Echo");
        person.setAge(25);
        // 调用 mapper 中的方法:命名空间 + id
        sqlSession.insert("com.capgemini.mapper.PersonMapper.insert",person);
        sqlSession.commit();
    }
    @Test
    public void Test03() throws IOException {
        String resource = "sqlMapperConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    // 创建 SqlSessionFactory

        SqlSession sqlSession = sqlSessionFactory.openSession();    // 获取到 SqlSession

        Person person = new Person();
        person.setId(2);
        person.setName("Echo");
        person.setAge(26);
        // 调用 mapper 中的方法:命名空间 + id
        sqlSession.update("com.capgemini.mapper.PersonMapper.update",person);
        sqlSession.commit();
    }

    @Test
    public void Test04() throws IOException {
        String resource = "sqlMapperConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    // 创建 SqlSessionFactory

        SqlSession sqlSession = sqlSessionFactory.openSession();    // 获取到 SqlSession

        Person person = new Person();
        person.setId(2);
        person.setName("Echo");
        person.setAge(26);
        // 调用 mapper 中的方法:命名空间 + id
        sqlSession.delete("com.capgemini.mapper.PersonMapper.delete",person);
        sqlSession.commit();
    }

}

4.其他
在PersonMapper.xml中的映射的对象是 使用下面方法实现的

  
    

可以通过实体对象映射,节省代码量


    
        
        
        
        
    
    
    

5.分析
1)首先是映射文件
namespace,是命名空间,是用于区分映射文件中的方法的
每一个sql语句操作都有一个id,对应的是SqlSession方法调用时候命名空间后的方法名,主要有4种sql语句操作类型,select,insert,update,delete。
parameterType,是sql语句的输入参数类型,如果输入参数是对应的实体类,在sql语句中则是使用#{实体类属性}来添加;如果不是则#{随便的命名}。
resultType,是sql语句返回的结果集类型,用于简单类型,
resultMap,是返回的结果集类型是复杂类型时候使用的,对应的是resultMap标签所指定的对象映射id
标签resultMap,其中id是用于sql语句结果集返回时resultMap的位置,type是映射对象,id是主键,result是普通字段,property是实体类属性,column是数据库中对应的字段名
2)调用方式
首先创建SqlSessionFacory对象,使用的是SqlSessionFactoryBuilder().build(inputStream)方法,其中inputStream可以通过Resources.getResourceAsStream(resource)方法获取,resource是核心配置文件位置。
然后获取SqlSession对象,使用的是sqlSessionFactory。openSession()方法。
最后调用mapper中的方法,增加使用insert,修改使用update,删除使用delete,查询使用select。

你可能感兴趣的:(MyBatis(1)-基本操作)