Mybatis-01 | 通过一个mybatis的入门案例熟悉mybatis的开发步骤

目录

1. MyBatis概述

什么使ORM?

2. Mybatis入门

环境搭建:

注意事项:

3. Mybatis工作流程


1. MyBatis概述

mybatis是一个持久层框架,用Java编写,它封装了jdbc操作的很多细节,使开发者只需要关注SQL本身,无需关注注册驱动、创建连接等繁杂的JDBC原始操作,它使用ORM思想实现了结果集的封装。

什么使ORM?

Object Relational Mapping对象关系映射。简单来说:就是把数据库表和实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。

2. Mybatis入门

环境搭建:

(1)创建maven工程并且导入坐标

         只是熟悉mybatis时,新建maven工程可不必选择模板,直接next就行。

然后需要的maven依赖:

<?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>edu.xatu</groupId>
    <artifactId>MyBatis-00</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>
        <!--日志这个不是必要的-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

    </dependencies>
</project>

下图是各个文件放置的位置

(2)创建实体类和Dao接口

         当然先需要有一张数据库表,实体类是与表中的属性相对应的

/**
 *实体类
 */
public class mbuser implements Serializable {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String adress;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    public String getSex() {
        return sex;
    }

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

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }

    @Override
    public String toString() {
        return "mbuser{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", adress='" + adress + '\'' +
                '}';
    }
}
/**
 * 用户的持久层接口
 */
public interface UserDao {
    public List<mbuser> findAll();
}

(3)创建mybatis主配置文件 sqlmapconfig.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">

<!--mybatis的主配置文件-->
<configuration>
    <!--配置文件-->
    <environments default="mysql">
        <!--配置sql环境-->
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源连接池-->
            <dataSource type="POOLED">
                <!--配置数据库连接的四个信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/TestDB?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--指定映射配置文件,映射配置文件是指每个dao独立的配置文件-->
    <mappers>
        <mapper resource = "edu/xatu/mybatis/dao/UserDao.xml"/>
    </mappers>
</configuration>

(4)创建映射配置文件 UserDao.xml,此处注意id和resultType

<?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="edu.xatu.mybatis.dao.UserDao" >
    <select id="findAll" resultType="edu.xatu.mybatis.domain.mbuser">
        select * from mbuser
    </select>
</mapper>

注意事项:

1.在创建UserDao.xml和UserDao.java时名称只是为了和之前学习的知识保持一致;在mybatis中把他的持久层操作接口名称和映射文件也叫做:mapper,所以UserDao和UserMapper是一样的。

2.mybatis映射文件位置必须和dao接口包目录结构完全相同

3.映射配置文件的mapper标签的namespace属性值必须是dao接口的全限定类名

4.映射配置文件的id属性值必须是dao接口的方法名

当遵从如上2、3、4规则之后的好处:在开发中无需写dao的实现类,就简化了开发。

然后写一个测试类,也就是mybatis的第一个入门案例如下:

/**
 * mybatis的入门案例
 */
public class mybatisTest {
    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("sqlmapconfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂获取SqlSession对象
        SqlSession session = factory.openSession();
        //4.用动态代理。使用SqlSession创建Dao接口的代理对象
        UserDao userDao = session.getMapper(UserDao.class);
        //5.使用代理对象执行方法
        List<mbuser> mbusers = userDao.findAll();
        for(mbuser mbuser : mbusers ){
            System.out.println(mbuser);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

执行成功后如下图(假装看不见表中内容,我个捏造数据的废柴)

3. Mybatis工作流程

为理解代码,还是要理解理解mybatis的工作流程的......我查资料的时候这个图真的是深得我意

以下两篇文章优秀,我就直接附链接了。

https://blog.csdn.net/u014745069/article/details/80788127

https://blog.csdn.net/u014297148/article/details/78696096

不积跬步无以至千里,加油吖!!!

发布了45 篇原创文章 · 获赞 11 · 访问量 4810

猜你喜欢

转载自blog.csdn.net/weixin_44187963/article/details/104879471
今日推荐