Mybatis-01 什么是Mybatis

2021-04-15 16:59:26 浏览数 (1)

Mybatis-01 什么是Mybatis

Mybatis系列文章已经完成上传: 一、什么是Mybatis 二、CRUD 三、配置解析 四、日志、分页 五、注解开发 六、动态Sql

1.简介

1.1 什么是Mybatis

MyBatis 是一款优秀的持久层框架 ,它支持定制化 SQL存储过程以及高级映射

MyBatis 避免了几乎所有的 JDBC 代码手动设置参数以及获取结果集

MyBatis 可以使用简单的 XML注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

Mybatis中文文档:

https://mybatis.org/mybatis-3/zh/index.html

1.2 获得Mybatis

Maven仓库:https://mvnrepository.com/

代码语言:javascript复制
Maven仓库

<dependency>
    <groupId>org.mybatisgroupId>
    <artifactId>mybatisartifactId>
    <version>3.5.3version>
dependency>

1.3 为什么需要Mybatis?

帮助程序员将数据存入到数据库中、方便。

传统的JDBC代码太复杂了。简化、框架、自动化。

优点:

  • 简单易学、灵活、sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

2.第一个Mybatis程序

2.1 数据库

因为使用的是MySql可视化工具,所以我描述我创建了什么

创建了,数据库mybatis,表user,表中内容idnamepwd

之后,在其中随便加入一些数据。

2.2 导入依赖

代码语言:javascript复制
<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.0modelVersion>

    <groupId>org.examplegroupId>
    <artifactId>MybatisartifactId>
    <version>1.0-SNAPSHOTversion>

    <dependencies>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.47version>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.4.6version>
        dependency>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
        dependency>
    dependencies>
    
project>

也可以加入下面这个配置

功能:主要用于打包资源文件默认情况下maven只打src/main/resource下的资源。

代码语言:javascript复制
<build>
    <resources>
        <resource>
            <directory>src/main/resourcesdirectory>
            <includes>
            <include>**/*.propertiesinclude>
            <include>**/*.xmlinclude>
            includes>
        resource>
        <resource>
            <directory>src/main/javadirectory>
            <includes>
                <include>**/*.propertiesinclude>
                <include>**/*.xmlinclude>
            includes>
            <filtering>truefiltering>
        resource>
    resources>
build>

2.3 配置mybatis-config.xml

代码语言:javascript复制
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"  value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"/>
                
                <property name="username" value="root"/>
                
                <property name="password" value="root"/>
            dataSource>
        environment>
    environments>
    
      
    <mappers>
        <mapper resource="Dao/UserDao.xml"/>
    mappers>
configuration>

2.4 Mybatis工具类

代码语言:javascript复制
public class mybatis_util {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (Exception e) {
            e.printStackTrace();
            }
         }
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
            //return sqlSessionFactory.openSession(true); 
            //第二种是自动提交事物   增删改就不用写sqlSession.commit();
        }
    }

2.5 pojo类

代码语言:javascript复制
public class user {
    private int id;
    private String name;
    private String pwd;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPwd() {
        return pwd;
    }

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

    @Override
    public String toString() {
        return "user{"  
                "id="   id  
                ", name='"   name   '''  
                ", pwd='"   pwd   '''  
                '}';
    }

    public user() {
    }

    public user(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
}

2.6 Dao类

代码语言:javascript复制
public interface UserDao {
    public List<user> getUserList();
}
代码语言:javascript复制
<mapper namespace="com.Dao.UserDao">
    <select id="getUserList" resultType="pojo.user">
        select * from mybatis.user
    select>
mapper>

上述两个文件,放在一个包下,必须命名相同

2.7 测试

代码语言:javascript复制
public class Test {

    @org.junit.Test
    public void test(){
       //第一步:获得SqlSession对象
        SqlSession sqlSession = mybatis_util.getSqlSession();
        //执行SQL
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<user> userList = mapper.getUserList();
        for (user user : userList) {
            System.out.println(user);
        }
        //关闭SqlSession
        sqlSession.close();
      }
    }

个人博客为: MoYu’s Github Blog MoYu’s Gitee Blog

0 人点赞