文章目录

  • Mybatis项目开发步骤
  • 1.建库建表
  • 2.创建maven项目
  • 3.引入依赖(配置pom.xml)
  • 4.创建核心配置文件(mybatis-config.xml)
  • 4.1 准备数据库配置文件(db.properties)
  • 4.2 配置mybatis-config.xml
  • 5.建包
  • 6.创建实体类(domain)
  • 7.创建Xxxmapper接口(mapper)
  • 8.创建Xxxmapper.xml映射文件
  • 8.1 在Xxxmapper.xml中编写sql语句
  • 8.2 在mybatis-config.xml中引入mapper映射文件
  • 9.创建MybatisUtils工具类
  • 10.创建测试类


Mybatis项目开发步骤

1.建库建表

-- 建库
create database `mybatis`;

-- 建表
CREATE TABLE `employee` (
  `id` int(20) NOT NULL AUTO_INCREMENT, 
  `name` varchar(50) NOT NULL,
  `age` int(3) DEFAULT NULL,
  `sex` varchar(1) DEFAULT NULL,
  `birthday` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
)DEFAULT CHARSET=utf8;

创建成功之后在表中添加信息:

mybatis mysql 虚拟表 mybatis如何建表_mybatis mysql 虚拟表

2.创建maven项目

mybatis mysql 虚拟表 mybatis如何建表_数据库_02


mybatis mysql 虚拟表 mybatis如何建表_java_03

项目创建完毕的初始目录:

mybatis mysql 虚拟表 mybatis如何建表_mybatis_04

初始pom.xml文件:

mybatis mysql 虚拟表 mybatis如何建表_mybatis_05

3.引入依赖(配置pom.xml)

?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.ymsd</groupId>
    <artifactId>MybatisDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.1</version>
        </dependency>
        <!-- mysql驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
        <!-- junit测试包 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- 局部jdk 1.8配置,pom.xml中 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

4.创建核心配置文件(mybatis-config.xml)

4.1 准备数据库配置文件(db.properties)

#驱动全限定类名
jdbc.driverClassName=com.mysql.jdbc.Driver
#数据库连接地址
#url=jdbc:mysql://localhost:8080//mybatis
jdbc.url=jdbc:mysql:///mybatis
#数据库用户名
jdbc.username=root
#数据库密码
jdbc.password=123456
好处:将数据与程序分离解耦,避免硬编码问题,方便后期修改。

4.2 配置mybatis-config.xml

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。能配置的内容如下: configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
<<<注意元素节点的顺序!顺序不对会报错 >>>
此处转载自:[]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <!-- 加载properties文件,一般都是存放数据库连接信息的文件 -->
    <properties resource="db.properties"/>

    <!-- 环境标签 可能连接多个数据库 可以在environments下面创建多个连接 default:默认,值就是对应下面的环境id -->
    <environments default="mysql">
        <environment id="mysql">
            <!-- 配置事务  JDBC:支持事务     MANAGED:什么都不做 -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据源dataSource   支持数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    
</configuration>

5.建包

src/main/java 
		--创建domain包(存放javabean)
		--创建mapper包(存放mapper接口,接口内定义了对数据库CRUD的抽象方法)
		--创建utils包(存放工具类)
src/main/resources
		--创建mapper文件夹(存放映射文件mapper.xml)
src/test/java
		--创建mapper包(存放测试文件)

这里需要注意:在resources资源包下创建的是directory,创建方式为:

mybatis mysql 虚拟表 mybatis如何建表_mybatis mysql 虚拟表_06

6.创建实体类(domain)

实体类的属性要和数据库里面表的字段相对应,数据类型采用包装类。

package cn.ymsd.domain;

import java.util.Date;
/**
 * @Description: Employee实体类
 * @Author: ZHl
 * @Date: 2022-08-18 10;00
 */
public class Employee {
    private Long id;//编号
    private String name;//姓名
    private Integer age;//年龄
    private String sex;//性别
    private Date birthday;//生日

    public Employee() {
    }

    public Employee(Long id, String name, Integer age, String sex, Date birthday) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.birthday = birthday;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long 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;
    }

    public String isSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthDay(Date birthday) {
        this.birthday = birthday;
    }

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

7.创建Xxxmapper接口(mapper)

接口中定义对数据库进行操作的方法:

package cn.ymsd.mapper;

import cn.ymsd.domain.Employee;

import java.util.List;

/**
 * @Description:
 * @Author: ZHl
 * @Date: 2022-08-18 10:05
 */
public interface EmployeeMapper {

    //查询所有信息
    List<Employee> findAllEmp();
}

8.创建Xxxmapper.xml映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        
 <!--namespace:该映射文件对应的接口的路径 -->       
<mapper namespace="cn.ymsd.mapper.EmployeeMapper">

</mapper>
Mapper中的namespace(命名空间)用于绑定指定接口,对sql进行分类化管理,即面向接口编程。
通过namesapce的绑定直接通过id找到相应方法,执行相应的SQL语句。

8.1 在Xxxmapper.xml中编写sql语句

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace:该映射文件对应的接口的路径-->
<mapper namespace="cn.ymsd.mapper.EmployeeMapper">

    <select id="findAllEmp" resultType="cn.ymsd.domain.Employee">
        SELECT * FROM employee
    </select>
    
</mapper>
id: 表示此段sql执行语句的唯一标识,也是接口的方法名称(必须一致才能找到方法)
 resultType: 定义返回值类型,这里返回JavaBean类型
 parameterType: 此参数是指定传入参数的类型
 注意:  parameterType可以不用写,mybatis在传参的时候会自动进行参数类型匹配,一般情况下parameterType可以不用写

8.2 在mybatis-config.xml中引入mapper映射文件

告诉MyBatis 去哪里找映射文件:

<mappers>
     <!-- 加载mapper.xml文件-->
     <mapper resource="cn/ymsd/mapper/EmployeeMapper.xml"/>
 </mappers>

9.创建MybatisUtils工具类

package cn.ymsd.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;

/**
 * @Description:
 * @Author: ZHl
 * @Date: 2022-08-17 11:22
 */
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;

    static {
        InputStream resourceAsStream;
        try {
            // 获取资源文件的流对象
            resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            // 构建sqlSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 打开数据库的会话对象
     */
    public static SqlSession getSqlSession(){
        if (sqlSessionFactory != null) {
            return sqlSessionFactory.openSession();
        }
        return null;
    }

    /**
     * 关闭会话对象
     * @param sqlSession
     */
    public static void closeSqlSession(SqlSession sqlSession){
        if (sqlSession != null) {
            // 关闭会话对象之前提交事务
            sqlSession.commit();
            sqlSession.close();
        }
    }
}

10.创建测试类

package cn.ymsd.mapper;

import cn.ymsd.domain.Employee;
import cn.ymsd.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

/**
 * @Description:
 * @Author: ZHl
 * @Date: 2022-08-18 14:33
 */
public class EmployeeMapperTest {

    //获取会话对象
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    //获取mapper接口对象
    EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);

        @Test
        public void testFindAllEmp(){
            List<Employee> allEmp = mapper.findAllEmp();
            allEmp.forEach(System.out::println);
        }

}

测试结果:

mybatis mysql 虚拟表 mybatis如何建表_mybatis_07

项目完成后的目录:

mybatis mysql 虚拟表 mybatis如何建表_xml_08