Mybatis-1-项目环境搭建(Maven)

本文介绍了Mybatis环境的搭建过程,包括创建Maven工程,导入相关依赖,设置数据库参数和配置文件,以及创建实体类、映射接口和映射文件。此外,还详细讲解了使用注解方式进行映射,阐述了注解方式的优点和缺点,以及如何进行测试和调整日志配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Mybatis环境搭建

  1. 创建一个maven工程
  2. 导入依赖
    mybatis的依赖
    数据库连接依赖(这里使用mysql)
    可选:单元测试依赖,日志
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <mybatis.version>3.5.3</mybatis.version>
        <mysql-connector-java.version>8.0.13</mysql-connector-java.version>
        <log4j.version>1.2.17</log4j.version>
        <junit.version>4.11</junit.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
    </dependencies>
    
  3. 新建 数据库参数文件 db.properties
    定义这几个最基本的参数
    db.driver=com.mysql.cj.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/seven?characterEncoding=UTF-8
    db.username=root
    db.password=tiger
    
  4. 新建 一个xml文件,文件名不强制要求。这里使用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">
    <!-- 配置mybatis -->
    <configuration>
        <!-- 指定 MyBatis 数据库配置文件 -->
        <properties resource="db.properties"/>
        <!-- 环境配置 -->
        <!-- 默认使用mysql这个环境 -->
        <environments default="mysql">
            <!-- mysql 数据库环境 -->
            <environment id="mysql">
                <!-- 事务管理:JDBC -->
                <transactionManager type="JDBC"/>
                <!-- 数据源配置,POOLED是JDBC连接对象的数据源连接池的实现 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${db.driver}"/>
                    <property name="url" value="${db.url}"/>
                    <property name="username" value="${db.username}"/>
                    <property name="password" value="${db.password}"/>
                </dataSource>
            </environment>
        </environments>
    
        <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 注解方式不需要这个 -->
        <mappers>
            <mapper resource="com/seven/mapper/GuestMapper.xml" />
        </mappers>
    </configuration>
    
  5. 新建包和映射文件夹
    在这里插入图片描述
    注意:
  • 创建resources/com/seven/mapper文件夹时,不要com.seven.mapper这样创建。因为这样创建后,只有一个叫com.seven.mapper的文件夹,是一级目录。
  1. 创建实体类,映射接口类,映射文件
    实体类:Guest.java
    package com.seven.entity;
    
    import java.util.Date;
    
    public class Guest {
        private Integer gid;
        private String gname;
        private String gpwd;
        private Date gbirthday;
    
        @Override
        public String toString() {
            return "Guest{" +
                    "gid=" + gid +
                    ", gname='" + gname + '\'' +
                    ", gpwd='" + gpwd + '\'' +
                    ", gbirthday=" + gbirthday +
                    '}';
        }
    
        public Integer getGid() {
            return gid;
        }
    
        public void setGid(Integer gid) {
            this.gid = gid;
        }
    
        public String getGname() {
            return gname;
        }
    
        public void setGname(String gname) {
            this.gname = gname;
        }
    
        public String getGpwd() {
            return gpwd;
        }
    
        public void setGpwd(String gpwd) {
            this.gpwd = gpwd;
        }
    
        public Date getGbirthday() {
            return gbirthday;
        }
    
        public void setGbirthday(Date gbirthday) {
            this.gbirthday = gbirthday;
        }
    }
    
    映射接口类:GuestMapper.java
    package com.seven.mapper;
    
    import com.seven.entity.Guest;
    
    import java.util.List;
    
    public interface GuestMapper {
        List<Guest> selectGuest();
    }
    
    映射文件:GuestMapper.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.seven.mapper.GuestMapper">
    
        <select id="selectGuest" resultType="com.seven.entity.Guest">
            select * from t_guest
        </select>
    
    </mapper>
    
    创建后的工程结构:
    在这里插入图片描述
    注意:
    创建实体类:这里实体类中的成员变量名与表的字段名一致。
    创建映射文件:
    namespace配置为映射接口
    在这里插入图片描述
    sql语句的id必须和映射接口的方法名一致!!
    在这里插入图片描述
    在这里插入图片描述
    必须要有返回结果封装的对象类型
    在这里插入图片描述
  2. 测试
    测试前先创建log4j的配置文件:log4j.properties
    log4j.rootLogger=info, A1 , R
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m -(:%L)%n
    
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=D:\\log\\testsocket_log.log
    log4j.appender.R.MaxFileSize=100KB
    log4j.appender.R.MaxBackupIndex=1
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n  
    
    然后编写测试类:GuestTest.java
    import com.seven.entity.Guest;
    import com.seven.mapper.GuestMapper;
    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;
    import java.util.List;
    
    public class GuestTest {
        public static void main(String[] args) throws IOException {
            // 1.导入mybatis配置文件,抛出异常
            //      使用org.apache.ibatis.io.Resources导入mybatis的xml配置文件
            InputStream resource = Resources.getResourceAsStream("mybatis.config.xml");
            // 2.创建SqlSessionFactory工厂
            //      说明:org.apache.ibatis.session.SqlSessionFactory是一个接口
            //      使用org.apache.ibatis.session.SqlSessionFactoryBuilder来创建SqlSessionFactory工厂
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            SqlSessionFactory factory = builder.build(resource);
            // 3.使用工厂生产SqlSession对象
            SqlSession sqlSession = factory.openSession();
            // 4.通过SqlSesison对象创建mapper接口的代理对象
            GuestMapper guestMapper = sqlSession.getMapper(GuestMapper.class);
            // 5.通过代理对象来调用selectGuest函数,来访问数据库
            List<Guest> guests = guestMapper.selectGuest();
            // 6.打印一下结果
            for (Guest guest : guests) {
                System.out.println(guest);
            }
            // 7.关闭资源
            sqlSession.close();
            resource.close();
        }
    }
    
    运行:
    在这里插入图片描述

二、使用注解的方式

即:在映射接口中使用注解,编写sql语句。
好处:在映射文件中,需要配置namespace,resultType等。而如果使用注解的方式,就不需要配置这些。
坏处:

步骤

说明:即使使用注解的方式,仍然需要mybatis的xml配置文件。

  1. 删除映射文件 GuestMapper.xml
  2. 修改mybatis的配置文件
    在这里插入图片描述
    <?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 数据库配置文件 -->
        <properties resource="db.properties"/>
        <!-- 环境配置 -->
        <!-- 默认使用mysql这个环境 -->
        <environments default="mysql">
            <!-- mysql 数据库环境 -->
            <environment id="mysql">
                <!-- 事务管理:JDBC -->
                <transactionManager type="JDBC"/>
                <!-- 数据源配置,POOLED是JDBC连接对象的数据源连接池的实现 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${db.driver}"/>
                    <property name="url" value="${db.url}"/>
                    <property name="username" value="${db.username}"/>
                    <property name="password" value="${db.password}"/>
                </dataSource>
            </environment>
        </environments>
    
        <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 注解方式不需要这个 -->
        <mappers>
            <!-- 使用xml方式开发,指定持久化类的映射文件 -->
    <!--        <mapper resource="com/seven/mapper/GuestMapper.xml" />-->
            <!-- 使用注解方式开发,指定持久化类接口 -->
            <mapper class="com.seven.mapper.GuestMapper"/>
        </mappers>
    
    </configuration>
    
  3. 在映射接口中添加注解
    在这里插入图片描述
    package com.seven.mapper;
    
    import com.seven.entity.Guest;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface GuestMapper {
        @Select("select * from t_guest")
        List<Guest> selectGuest();
    }
    
    
  4. 运行测试类
    在这之前把log4j的等级改成了debug,可以看到执行的sql语句
    在这里插入图片描述

更新时间:2020-1-9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值