环境搭建

  1. 环境搭建
  2. MyBatis讲解
    1. 进行基本的环境搭建,跑个流程
    2. 环境搭建的注意事项

mybatis是持久层的框架,持久层总图如下:

环境搭建

首先maven工程报错了,那么可能是仓库没配好,看:https://www.cnblogs.com/phpdragon/p/7216626.html

环境

  • JDK1.8
  • Mysql 5.7
  • maven 3.6.1

MyBatis讲解

  • 优秀的持久层框架。
  • 可以使用XML或注解来配置
  • 几乎避免了所有的代码
  • 本来是apache的一个开源项目iBatis,2010年由apache software foundation迁移到了google code,并且修改名字为mybatis

进行基本的环境搭建,跑个流程

  1. 首先打开idea选择maven工程,不需要create,直接点击下一步,填写好名字

  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>com.bean</groupId>
        <artifactId>Mybatis01</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>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
        </dependencies>
    
    </project>
    
  3. 数据库建表

    CREATE DATABASE Mybatis;
    
    use Mybatis;
    
    DROP TABLE IF EXISTS `user`;
    
    CREATE TABLE `user` (
    `id` int(11) NOT NULL auto_increment,
    `username` varchar(32) NOT NULL COMMENT '用户名称',
    `birthday` datetime default NULL COMMENT '生日',
    `sex` char(1) default NULL COMMENT '性别',
    `address` varchar(256) default NULL COMMENT '地址',
    PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');
    

  4. 建立domain,将表与类对应

    package com.bean.domain;
    
    import java.io.Serializable;
    import java.util.Date;
    
    public class User implements Serializable {
    
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    
    public User(Integer id, String username, Date birthday, String sex, String address) {
        this.id = id;
        this.username = username;
        this.birthday = birthday;
        this.sex = sex;
        this.address = address;
    }
    
    public User() {
    }
    
    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 getAddress() {
        return address;
    }
    
    public void setAddress(String address) {
        this.address = address;
    }
    
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
    }
    
  5. 编写持久层接口 IUserDao

    package com.bean.dao;
    
    import com.bean.domain.User;
    
    import java.util.List;
    
    /**
    * IUserDao接口就是我们常说的持久层接口,也可以写作UserDao或者UserMapper
    */
    public interface IUserDao {
    
        /**
        * 查询所有用户
        * @return  List<User>
        */
        List<User> findAll();
    }
    
  6. 编写持久层接口的映射文件 IUserDao.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-->
    <mapper namespace="com.bean.dao.IUserDao">
        <!--
            这个id不能瞎写,是IUserDao里面的方法名
            这个resultType是表对应的类,结果类型
            里面的语句是要执行的语句
        -->
        <select id="findAll" resultType="com.bean.domain.User">
            select * from user
        </select>
    </mapper>
    
  7. 编写 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>
        <!--    首先来配置mybatis的环境,叫不叫mysql无所谓,但是下面必须对这个名字解释-->
        <environments default="mysql">
            <!--  配置mysql的环境,对mysql进行解释  -->
            <environment id="mysql">
                <!--配置事务的类型-->
                <transactionManager type="JDBC"></transactionManager>
                <!--配置连接数据库的信息,用的是数据源(连接池),
                    这里的driver,url,username,password应该都熟悉吧
                -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/Mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
    
    
        <!--接下来指定映射配置文件的位置,映射配置文件是指的每个dao的独立的配置文件-->
        <mappers>
            <mapper resource="com/bean/dao/IUserDao.xml"/>
        </mappers>
    </configuration>
    

    注意一件事:<mapper></mapper>的配置可以是resource,可以是class

    一般我们使用resouce来进行配置的时候使用的是xml文档

    使用class进行配置的时候使用的是注解开发


环境搭建的注意事项

  1. Mybatis中的dao层主要叫做Mapper,所以这里的IUserDao也叫做IUserMapper
  2. idea中创建目录和包是不一样的
    1. 包(Package):com.bean.dao是三级结构
    2. 目录(Directory):com.bean.dao是一级目录
  3. mybatis的映射配置文件位置必须和dao接口的包结构相同,也就是上面第六步的注意事项
  4. 映射配置文件的mapper标签namespace属性的取值必须为dao接口的全限定类名
  5. 映射配置文件的操作配置(select),id属性必须是dao接口的方法名

当我们在遵从了3,4,5点之后,我们在开发中就无需写dao的实现类,也就是说写完接口我们的操作就结束了



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。