MyBatis框架搭建(利用Maven技术)

一、pom.xml配置文件

导入MyBatis框架包以及所需仓库(Maven技术在云端下载)


  4.0.0
  com.bdqn
  T369-MyBatis
  war
  1.0-SNAPSHOT
  T369-MyBatis Maven Webapp
  http://maven.apache.org
  
  
    
    
      com.mysql
      mysql-connector-j
      8.2.0
    
    
    
      org.mybatis
      mybatis
      3.5.16
    
    
    
      log4j
      log4j
      1.2.17
    
    
      junit
      junit
      4.13.2
      test
    
  
  
    T369-MyBatis
    
      
        src/main/resources
        
          **/*.properties
          **/*.xml
        
      
    
  

二、配置MyBatis框架核心配置文件mybatis-config.xml

MyBatis框架的核心配置文件中设置的是MyBatis框架的全局信息,包括数据库连接及事务信息、MyBatis框架运行所需的各种特性,以及一些影响MyBatis框架运行时的行为的属性。需要注意的是该配置文件的元素节点是有先后顺序的。

configuration        根节点

        properties        描述一些外部的、可替代的属性

        settings            修改MyBatis的运行时行为

        typeAliases      为Java类型指定一个别名

        typeHandlers   类型处理器

        objectFactory   对象工厂

        plugins              插件

        environments    环境配置

                environment        一组环境配置

                        》transactionManager        事务管理器

                        》dataSource                      数据源

        databaseIdProvider 启动多数据库厂商支持

        mapper                     映射器




    
    
    
    
        
        
    
    

        

    
    
    

        
            
            
            
            
                
                
                
                
                
            
        
    

    
    
        
    

三、创建实体类

        在应用程序设计中,实体类通常对应需求中的业务实体,并与关系型数据库中的表结构存在对应关系。通过实体类映射SQL语句实现持久化操作时MyBatis框架最常见的工作模式。

        MyBatis框架一般采用POJO编程模型定义实体类,POJO可以简单地理解为符合JavaBean规范的普通的Java对象,该对象没有特殊的继承或实现关系(java.io.Serializable接口除外),使用私有属性存储对象状态,访问属性必须通过相应的getter和setter方法,符合面向对象封装的要求。

package com.bdqn.entity;

import java.io.Serializable;

/**
 * @author 崔书健
 */
//@Alias("book")
public class Book implements Serializable {

    private static final long serialVersionUID = 42L;

    private int bid;
    private String bName;
    private String author;
    private String pubComp;
    private String pubDate;
    private int bCount;
    private float price;

    public String toString() {
        return "book{bid="+this.bid+",bName="+this.bName+",author="+this.author+",pubComp="+this.pubComp+",pubDate="+this.pubDate+",bCount="+this.bCount+",price="+this.price+"}";
    }

    public int getBid() {
        return bid;
    }

    public void setBid(int bid) {
        this.bid = bid;
    }

    public String getbName() {
        return bName;
    }

    public void setbName(String bName) {
        this.bName = bName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getPubComp() {
        return pubComp;
    }

    public void setPubComp(String pubComp) {
        this.pubComp = pubComp;
    }

    public String getPubDate() {
        return pubDate;
    }

    public void setPubDate(String pubDate) {
        this.pubDate = pubDate;
    }

    public int getbCount() {
        return bCount;
    }

    public void setbCount(int bCount) {
        this.bCount = bCount;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }
}

四、创建Mapper接口

        在MyBatis框架下,Mapper接口是指用于 绑定到SQL映射语句的接口,又称映射器,通常于SQL映射文件配合使用。对应用而言,Mapper接口即为DAO接口,定义了对数据进行持久化操作的API。

package com.bdqn.mapper;

import com.bdqn.entity.Book;

import java.util.List;

public interface BookMapper {

    /**
     * 统计图书数量的方法
     * @return
     */
    public int count();

    /**
     * 查询用户列表
     * @return
     */
    public List getBookList();
}

五、创建SQL映射文件 

        定义与用户操作相关的SQL映射文件,该文件时一个XML文件,如以下实例





    
    
    

六、编写测试类

本文章使用JUnit进行测试,结果在控制台输出

定义工具类MyBatisUtil

在静态代码块中创建SqlSessionFactory实例,并定义两个静态方法,分别用于创建SqlSession和关闭SqlSession。

package com.bdqn.utils;

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 java.io.IOException;
import java.io.InputStream;

/**
 * @author 崔书健
 */
public class MyBatisUtil {

    private static SqlSessionFactory factory;

    static{
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            throw new RuntimeException("初始化失败",e);
        }
    }

    public static SqlSession createSqlSession(){

        return factory.openSession(false); // false表示关闭自动提交用于事务控制
    }

    public static void closeSqlSession(SqlSession sqlSession){
        if (sqlSession != null){
            sqlSession.close();
        }
    }
}

创建测试类

package com.bdqn.mapper;

import com.bdqn.entity.Book;
import com.bdqn.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.io.InputStream;
import java.util.List;
import java.util.logging.Logger;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * @author 崔书健
 */
public class SysBookMapperTest {

    private SqlSession sqlSession;

    /**
     * 在每一个测试用例执行之前做的事情
     * @throws Exception
     */
    @Before
    public void setUp() throws Exception{
        sqlSession = MyBatisUtil.createSqlSession();
    }

    /**
     *  在每一个测试用例执行之后做的事情
     */
    @After
    public void tearDown(){
        MyBatisUtil.closeSqlSession(sqlSession);
    }

    /**
     * 测试查询总数据量(myBatis框架基本使用)
     */
    @Test
    public void testCount(){
        int count = sqlSession.getMapper(BookMapper.class).count();
        System.out.println("总数据量:" + count);
        assert true;
    }

    /**
     * 测试查询数据列表
     */
    @Test
    public void testBookListQuery(){
        List list = sqlSession.getMapper(BookMapper.class).getBookList();
        for (Book book : list) {
            System.out.println(book);
        }
        assert true;
    }
}

你可能感兴趣的:(mybatis,maven,java)