mybatis 基本配置 学习总结01

Mybatis

1、什么是Mybatis

  1. Mybatis是一款优秀的持久层框架
  2. 几乎避免了所有JDBC代码和手动设置参数以及获取结果集的过程。
  3. Mybatis是一个半自动化的ORM框架(Object Relationship Mapping)

持久化:将程序数据在持久状态和瞬时状态间转换的机制。(保存到可永久存储的设备中:磁盘...)


什么是持久层?

完成持久化工作的代码块:dao层【DAO (Data Access Object)数据访问对象】


2、第一个程序:

1、数据库

CREATE DATABASE `mybatis`;

USE `mybatis`;

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');

2、IDEA创建项目

Create New Project --> Maven -->Next -->Location(项目的位置) --> Finish


3、导入所需的jar包

找jar包例子:如:找mybatis的jar

  1. 百度 “mybatis mvn”
  2. 点击要用到的jar包名
  3. 选择版本
  4. 复制maven

pom.xml:

<!--总依赖标签-->
<dependencies>
    <!--mybatis 使用所需的依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <!--sql 连接的依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
</dependencies>

4、创建文件

1、创建mybatis-config.xml

右键resources --> new --> File --> 填“mybatis-config.xml”

mybatis-congif.xml

<?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> <!-- 配置标签 -->
<environments default="development"> <!-- 总环境  默认:development -->
    <environment id="development"> <!-- 环境 名为:development -->
        <transactionManager type="JDBC"/> <!-- 事务管理器  类型:JDBC (事务:确保操作完整性,要么成功要么失败)-->
        <dataSource type="POOLED"> <!-- 数据源 类型:POOLED-->
            <property name="driver" value="com.mysql.jdbc.Driver"/> <!--属性 名:驱动 值:..mysql(使用的何种数据库).. -->
            <!-- 属性 名:url 值:数据连接地址+规则(如:字符集:UTF-8) -->
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
            <property name="username" value="root"/> <!-- 属性 名:数据库用户名  值:root-->
            <property name="password" value="123"/> <!--属性 名:密码  值:123456 -->
        </dataSource>
    </environment>
</environments>
<mappers> <!--映射器 -->
    <mapper resource="com/dao/userMapper.xml"/> <!-- 映射  资源:userMapper.xml -->
</mappers>
</configuration>

2、User 实体类

点开java(文件是蓝色)--> 右键 --> new --> Package --> 填入“com.pojo” -- >

右键:pojo文件 --> new --> Java Class --> 命名为“User”


生成get、set的快捷键:Alt + Insert (如:选择了set后,Ctrl+A全选所有的成员生成set方法)


User.java

package com.pojo;

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

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

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

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

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}


3、UserMapper.xml

右键com --> New --> Package --> 填"com.dao"

右键dao --> File --> 填“UserMapper.xml”

这里将会有一个问题:IDEA不会编译src的main中java文件里的.xml文件(需要进行过滤放置)

UserMapper.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">
<mapper namespace="com.dao.UserMapper"> <!-- 映射器  命名空间:映射到那个类的地址  -->
    <select id="selectUser" resultType="com.pojo.User"> <!-- 查询  名:selectUser  结果类型:com.pojo.User -->
      select * from user
    </select>
</mapper>

4、UserMapper (接口)

右键com (packge) --> new --> Packege --> 填“com.dao"

右键 dao --> New -- >Class --> Interface --> 填“UserMapper”

UserMapper

package com.dao;

import com.pojo.User;

import java.util.List;

public interface UserMapper {
    List<User> selectUser();
}


5、MyBatisUtils工具类

右键目录java(蓝色)--> new --> Package --> utils

右键utils ---> New -->Java Class ---> 填“MybatisUtils”

MybatisUtils.java

package 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;

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static{
        try {
            String resource = "mybatis-config.xml"; // 获取资源文件路径
            InputStream inputStream = Resources.getResourceAsStream(resource); //读取文本数据
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 创造工厂
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }
}

6、MyTest

点击test --> 右键java(绿色) -->new --> Java Class --> 填“MyTest”

import com.dao.UserMapper;
import com.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import utils.MybatisUtils;

import java.util.List;

public class MyTest {
    @Test
    public void selectUser() {
        SqlSession session = MybatisUtils.getSession();

        UserMapper mapper = session.getMapper(UserMapper.class);
        List<User> users = mapper.selectUser();

        for (User user: users){
            System.out.println(user);
        }
        session.close();
    }
}


7、静态资源过滤

运行程序后出现异常:Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/dao/userMapper.xml


原因:idea不会编译src的java目录的xml文件(被过滤掉)

需要配置过滤文件,让其能够在src中使用.xml文件


pom.xml

<!--配置过滤器不过滤java文件里面的 .properties和 .xml文件
    不过滤resources文件里面的 .properties和 .xml文件  -->
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
原文地址:https://www.cnblogs.com/zhouyongyin/p/13453262.html