Mybatis-使用Maven建立Mybatis工程 (IDEA)

使用IDEA创建Mybatis项目

Mybatis应用的搭建流程
    1. 创建一个maven项目
    2. 添加Mybatis,MySQL驱动,junit依赖
    3. 构建
    4. 在src/main/resources添加一个mybatis-config.xml
    5. 编写实体类,放在entity,实体类是跟我们数据库表对应的类
    6. 编写映射,mapper包中,定一个mapper映射接口
    7. 编写映射,src/main/resources/mapper 定义mapper.xml
    8. 创建SqlSessionFactory工厂类,使用SqlSessionFactory工厂类打开SqlSession进行操作。


1. 创建一个maven项目
maven工程的创建在前边的博客已经总结过:https://blog.csdn.net/qq_35402412/article/details/80774955

创建一个空的maven项目后如下:

    

2. 添加依赖

IDEA为我们自动生成了pom.xml文件,我需要在里面添加相应的依赖,
Mybatis依赖、MySQL依赖、junit依赖

    

3. 构建


    其他plugin信息不再赘述完整的pom.xml文件如下:(pom文件的配置基本都一样,我们以后可以粘贴复制之,根据自己的情况做依赖添加或修改)

pom.xml:

<?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.chang</groupId>
    <artifactId>mybatis-test-03</artifactId>
    <version>1.0.0</version>

    <properties>
        <java>1.8</java>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>

    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>${java}</source>
                    <target>${java}</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.mybatis.demo.Demo</mainClass>
                            <addExtensions>true</addExtensions>
                            <classpathPrefix>lib</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
4. 在src/main/resources添加一个mybatis-config.xml

我们要使用Mybatis,就是要和数据库打交道,所以我们把之间通过JDBC链接的方式,放到mybatis-config.xml中,内容如下:


5. 编写实体类,放在entity,实体类是跟我们数据库表对应的类

在Mybatis中,我们通过一个类和一个数据库表对应连接,在memo数据库中,memoGroup表(id, name , created_time, modify_time)所对应的实体类如下:


MemoGroup.java

package com.chang.entity;
import java.util.Date;
public class MemoGroup {
    private Integer id;
    private String name;
    private Date createdTime;
    private Date modifyTime;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getCratedDate(Date date) {
        return createdTime;
    }
    public void setCratedDate(Date cratedDate) {
        this.createdTime = cratedDate;
    }
    public Date getModifyDate() {
        return modifyTime;
    }
    public void setModifyDate(Date modifyDate) {
        this.modifyTime = modifyDate;
    }
    @Override
    public String toString() {
        return "memoGroup{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", createdTime=" + createdTime +
                ", modifyTime=" + modifyTime +
                '}';
    }
}
6. 编写映射,mapper包中,定一个mapper映射接口

实体类我们写好了,接下来我们需要一些方法来操作实体类与数据库的交互,我们创建一个MemoGroupMapper接口:


MemoGroupMapper.java

package com.chang.mapper;

import com.chang.entity.MemoGroup;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Author: 
 * Created: 2018/6/24
 */
public interface MemoGroupMapper {

    /**
     * 查询所有便签组
     *
     * @return
     */
    List<MemoGroup> queryAll();

    /**
     * 插入一个便签组
     *
     * @param memoGroup
     * @return
     */
    int insetMemoGroup(MemoGroup memoGroup);

    /**
     * 修改便签组的名称
     *
     * @param id
     * @param name
     * @return
     */
    int updateMemoGroup(@Param("id") int id, @Param("name") String name);

    /**
     * 根据Id删除便签组
     *
     * @param id
     * @return
     */
    int deleteMemoGroup(int id);
}
7. 编写映射,src/main/resources/mapper 定义mapper.xml

接口我们写好了,但是我们不需要自己写实现类,我们通过一个xml文件,通过映射的方式来实现抽象方法,在main/resources下创建一个mapper目录,用于存放我们的映射文件MemoGroupMapper.xml


MemoGroupMapper.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.chang.mapper.MemoGroupMapper">

    <resultMap id="memoGroup" type="com.chang.entity.MemoGroup">
        <id property="id" column="id" javaType="int" jdbcType="INTEGER"/>
        <result property="name" column="name" javaType="string" jdbcType="VARCHAR"/>
        <result property="createdTime" column="created_time" javaType="date" jdbcType="TIMESTAMP"/>
        <result property="modifyTime" column="modify_time" javaType="date"
                jdbcType="TIMESTAMP"/>
    </resultMap>

    <select id="queryAll" resultMap="memoGroup">
        select
            id,
            name,
            created_time,
            modify_time
        from memo_group
    </select>

    <insert id="insetMemoGroup" parameterType="com.chang.entity.MemoGroup">
        insert into memo_group (name, created_time) values (#{name}, #{createdTime})
    </insert>

    <update id="updateMemoGroup">
        update memo_group
        set name = #{name}
        where id = #{id}
    </update>

    <delete id="deleteMemoGroup">
        delete from memo_group
        where id = #{id}
    </delete>

</mapper>
8. 创建SqlSessionFactory工厂类,使用SqlSessionFactory工厂类打开SqlSession进行操作。

基本映射我们已经写完了,接下来我们要通过一个名为的SqlSession类来实现数据库的操作,首先创建一个测试类,在test/java下创建包com.chang,创建一个MemoGroupMapperTest测试类


MemoGroupMapperTest.java

package com.chang;

import com.chang.entity.MemoGroup;
import com.chang.mapper.MemoGroupMapper;
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.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.Date;
import java.util.List;

public class MemoGroupMapperTest {
    public static SqlSessionFactory sqlSessionFactory;

    @Before
    public void beforeTest(){
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder =
                new SqlSessionFactoryBuilder();
        try{
            sqlSessionFactory = sqlSessionFactoryBuilder.build(
                    Resources.getResourceAsStream("mybatis-config.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @AfterClass
    public static void setAfter() {
        sqlSessionFactory = null;
    }

    @Test
    public void testQueryAll(){
        SqlSession sqlSession = null;
        try{
            sqlSession = sqlSessionFactory.openSession();
            MemoGroupMapper memoGroupMapper = sqlSession.getMapper(MemoGroupMapper.class);
            List<MemoGroup> list = memoGroupMapper.queryAll();
            Iterator<MemoGroup> iterator = list.iterator();
		while(iterator.hasNext()){
   		     System.out.println(iterator.next());
		}
        }finally {
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }

    @Test
    public void testInsetMemoGroup(){
        SqlSession sqlSession = null;
        try{
            MemoGroup memoGroup = new MemoGroup();
            memoGroup.setName("DD");
            memoGroup.setCratedDate(new Date());
            sqlSession = sqlSessionFactory.openSession();
            MemoGroupMapper memoGroupMapper = sqlSession.getMapper(MemoGroupMapper.class);
            int effect = memoGroupMapper.insetMemoGroup(memoGroup);
            Assert.assertEquals(1,effect);
            sqlSession.commit();
        }finally {
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }

    @Test
    public void testUpdateMemoGroup(){
        SqlSession sqlSession = null;
        try{
            sqlSession = sqlSessionFactory.openSession();
            MemoGroupMapper memoGroupMapper = sqlSession.getMapper(MemoGroupMapper.class);
            int effect = memoGroupMapper.updateMemoGroup(5,"CC");
            Assert.assertEquals(1,effect);
            sqlSession.commit();
        }finally {
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }

    @Test
    public void testDeleteMemoGroup(){
        SqlSession sqlSession = null;
        try{
            sqlSession = sqlSessionFactory.openSession();
            MemoGroupMapper memoGroupMapper = sqlSession.getMapper(MemoGroupMapper.class);
            int effect = memoGroupMapper.deleteMemoGroup(7);
            Assert.assertEquals(1,effect);
            sqlSession.commit();
        }finally {
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }
}

做一个查询测试:



============================================================================
到此,我们一个简单的Mybatis项目终于构建完成。





猜你喜欢

转载自blog.csdn.net/qq_35402412/article/details/80790962