文章目录

  • 一、总体步骤
  • 二、创建工程
  • 三、配置环境
  • 配置maven环境
  • 然后配置我们的log4j来打印日志,我就直接放到resource文件夹下了
  • 然后配置我们的数据的信息,我就直接叫jdbc.properties放再resources文件夹下了
  • 接下来再来配置Mybatis的主配置文件,文件名采用它建议的sqlMapConfig.xml的形式
  • 创建实体类、实体类的Dao以及相应的映射文件
  • 四、测试环境


一、总体步骤

1.创建工程

2.配置环境

3.测试环境

二、创建工程

首先在IDEA中创建maven-web工程

idea搭建mapreduce开发环境 idea搭建mybatis环境_配置文件

idea搭建mapreduce开发环境 idea搭建mybatis环境_bc_02

这里没啥好说的,直接点完成就好了。

如果你是第一次创建,那么maven会去下载一些相关的配置之类的,稍微等一会儿就好了。

idea搭建mapreduce开发环境 idea搭建mybatis环境_mybatis_03


创建完工程之后开始创建各个包

idea搭建mapreduce开发环境 idea搭建mybatis环境_bc_04


创建好之后,接下来就该配置环境了

三、配置环境

配置maven环境

首先是配置maven的依赖:

<!--连接本地数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

        <!--日志信息-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--mybatis导入-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.0</version>
        </dependency>

        <!--junit单元测试导入-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

配置maven的读取日志,要把这个放到project标签下的build标签中

<!-- 
		下面的是为了让IDEA的maven工程可以读取放在java包下的配置文件 
		这个也不知道是bug还是啥,反正只要是maven工程,不管你有没有resource文件夹
		我的电脑都读取不到,就只好这样去配置了
		-->      
		  <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

idea搭建mapreduce开发环境 idea搭建mybatis环境_mybatis_05

然后配置我们的log4j来打印日志,我就直接放到resource文件夹下了

# Global logging configuration
log4j.rootLogger=DEBUG, stdout

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

idea搭建mapreduce开发环境 idea搭建mybatis环境_配置文件_06

然后配置我们的数据的信息,我就直接叫jdbc.properties放再resources文件夹下了

其实这个文件夹没有那么烦人,反而很好用,但是mybatis的话我还是习惯放到dao包下。我觉得如果是全局性的配置文件就放到resources文件夹下即可,但是如果是那种对应某个包的,还是放到某个包里面好一点

# 在这里加上jdbc的原因是为了避免以后不必要的冲突
# 如果以后这个配置文件配置的数据库信息比较多的话,这样可以尽量避免名字上的冲突
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

idea搭建mapreduce开发环境 idea搭建mybatis环境_idea搭建mapreduce开发环境_07

接下来再来配置Mybatis的主配置文件,文件名采用它建议的sqlMapConfig.xml的形式

  1. 首先,先配置读取的配置文件,因为我们要读取我们的数据配置文件
<!--在这里加载外部的配置文件,resource表示本地的配置文件,url这表示要加载的网上的文件-->
    <properties resource="jdbc.properties" ></properties>
  1. 配置typeAliases
<typeAliases>
        <!--
        package表示是使用包扫描的方式来起别名
        typeAlias表示给某个类起别名,但是那样效率太低,建议直接包扫描来
        在这里使用点来分割-->
        <package name="com.ps.pojo"/>
    </typeAliases>
  1. 配置数据库环境
<!--在这个里面可以配置多个数据,default就是表示你默认要使用那个数据的配置-->
    <environments default="JDBC">
        <!--配置一个完整的数据库环境,这里的参数可以使用我们配置文件中的参数-->
        <!--这个id就是为这个环境起的一个名字,用来唯一标识这个-->
        <!-- 在一个大的environment中可以配置多个environment -->
        <environment id="JDBC">
            <!--配置事务管理器
            JDBC就表示采用jdbc的事务管理器
            MANAGED表示事务交给容器管理,mybatis不管理,后续会交给spring容器管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库的信息,POOLED表示使用连接池,UNPOOLED表示不适用连接池-->
            <dataSource type="POOLED">
                <!--下面就是数据集体的信息配置了,在这里想要使用配置文件中的参数的话
                就需要使用${参数名}这种方式来获取数据-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
  1. 配置映射文件路径,如果你全程采用注解的话,也可以不配置
<!--配置映射文件的路径-->
    <mappers>
        <!--package表示使用包扫描的方式,这样去配置-->
        <!--mapper表示一个一个的去配置,和上面的取别名一样,效率太低,不建议这样使用-->
        <package name="com.ps.dao"/>
    </mappers>

那么再加上引入约束等就是这样的:

<?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>

<!--在这里加载外部的配置文件,resource表示本地的配置文件,url这表示要加载的网上的文件-->
    <properties resource="jdbc.properties" ></properties>

    <!--在这里是给实体类起别名,也就是简化实体类的输入
    这样配置之后在mybatis的mapper配置中就不需要些类全名了
    而且,改名之后它是不区分大小写的
    -->
    <typeAliases>
        <!--
        package表示是使用包扫描的方式来起别名
        typeAlias表示给某个类起别名,但是那样效率太低,建议直接包扫描来
        在这里使用点来分割-->
        <package name="com.ps.pojo"/>
    </typeAliases>

    <!--在这个里面可以配置多个数据,default就是表示你默认要使用那个数据的配置-->
    <environments default="JDBC">
        <!--配置一个完整的数据库环境,这里的参数可以使用我们配置文件中的参数-->
        <!--这个id就是为这个环境起的一个名字,用来唯一标识这个-->
        <!-- 在一个大的environment中可以配置多个environment -->
        <environment id="JDBC">
            <!--配置事务管理器
            JDBC就表示采用jdbc的事务管理器
            MANAGED表示事务交给容器管理,mybatis不管理,后续会交给spring容器管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库的信息,POOLED表示使用连接池,UNPOOLED表示不适用连接池-->
            <dataSource type="POOLED">
                <!--下面就是数据集体的信息配置了,在这里想要使用配置文件中的参数的话
                就需要使用${参数名}这种方式来获取数据-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置映射文件的路径-->
    <mappers>
        <!--package表示使用包扫描的方式,这样去配置-->
        <!--mapper表示一个一个的去配置,和上面的取别名一样,效率太低,不建议这样使用-->
        <package name="com.ps.dao"/>
    </mappers>

</configuration>

创建实体类、实体类的Dao以及相应的映射文件

创建实体类:

这里根据你数据库的表来创建即可

package com.ps.pojo;

import java.util.List;

public class User {
    private int id;
    private String username;
    private String birthday;
    private char sex;
    private String address;
}

剩下的就是一些getter、setter、构造和toString方法了,不过这里要注意构造方法建议写两个,一个是空参构造,一个是满参构造。

创建UserDao:

package com.ps.dao;

import com.ps.pojo.User;

import java.util.List;

public interface UserDao {

    List<User> findUser();

}

配置映射文件:

<?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.ps.dao.UserDao">

    <!--把sql语句写在两个标签之内-->
    <!--
    id标识接口中方法的方法名
    resultType标识返回值的类型,由于之前配置了别名,所以可以直接使用小写类名来获取
    -->
    <!--标签根据你需要的sql语句来修改,有delete、inset、update-->
    <select id="findUser" resultType="user">
        select * from user
    </select>

</mapper>

idea搭建mapreduce开发环境 idea搭建mybatis环境_idea搭建mapreduce开发环境_08

好的基本环境配置已经配置完了,接下来该测试代码了

四、测试环境

之前创建了test包就是用来放测试类的,那么就直接取那个包下创建类:

idea搭建mapreduce开发环境 idea搭建mybatis环境_idea搭建mapreduce开发环境_09

编写测试代码:

package com.ps.dao;

import com.ps.pojo.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;


public class UserDaoTest {

    private static SqlSession session = null;
    private static SqlSessionFactory build = null;

    //放到这里面的最好是只需要加载一次的,因为它只会加载一次
    //如果把SqlSession也放到这里的话,那就只会打开一个连接,就失去了使用连接池的意义
    @BeforeClass
    public static void Init() throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
        //2.创建sqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //3.获得sqlSessionFactory对象
        build = sessionFactoryBuilder.build(in);
    }


    //代码放到这里每个方法加载之前都会加载一次
    @Before
    public void getSession() {
        //获得sqlSession,这个就相当于connection
        session = build.openSession();
    }

	//这里建议按照test+方法名来命名,这样可以清晰的知道这个类是做什么的
	//当然我自己经常弄乱,这个没有太大的问题,test在前在后都不影响
    @Test
    public void TestFindUser() {
        //加载接口映射文件
        UserDao mapper = session.getMapper(UserDao.class);
        //调用实现了的方法,获得返回值
        List<User> list = mapper.findUser();
        //遍历返回的数组
        for (User user : list) {
            System.out.println(user);
        }
    }

	//放到这里的代码,最后一个方法结束之后就会调用这个方法
    @After
    public void close() {
        //关闭sqlSession,就相当于关闭了connection
        //只不过如果设置了连接池,不会销毁连接,而是把连接放回到连接池中
        session.close();
    }
}

测试结果:

idea搭建mapreduce开发环境 idea搭建mybatis环境_java_10