码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis-01 什么是Mybatis

时间:2021-02-18 13:27:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:cto   rom   target   catch   project   actor   传统   使用   url   

Mybatis-01 什么是Mybatis

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/

Maven仓库

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>

1.3 为什么需要Mybatis?

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

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

优点:

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

2.第一个Mybatis程序

2.1 数据库

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

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

技术图片

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

2.2 导入依赖

<?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>org.example</groupId>
    <artifactId>Mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
    
</project>

也可以加入下面这个配置

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

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

2.3 配置mybatis-config.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">
        <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&amp;characterEncoding=UTF-8"/>
                <!--账号-->
                <property name="username" value="root"/>
                <!--密码-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    
      <!--两种方式  Dao类文件-->
    <mappers>
        <mapper resource="Dao/UserDao.xml"/>
    </mappers>
</configuration>

2.4 Mybatis工具类

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类

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类

public interface UserDao {
    public List<user> getUserList();
}
<?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中是Dao中接口类位置-->
<mapper namespace="com.Dao.UserDao">
    <select id="getUserList" resultType="pojo.user">
        select * from mybatis.user
    </select>
</mapper>

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

2.7 测试

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

Mybatis-01 什么是Mybatis

标签:cto   rom   target   catch   project   actor   传统   使用   url   

原文地址:https://www.cnblogs.com/MoYu-zc/p/14406813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!