Maven+mybatis+mysql项目实践(附demo)

该博客详细介绍了如何结合Maven、MyBatis和MySQL创建一个项目,从数据库建表到配置实体类、接口、映射文件,再到实现和测试。文章提供了一个完整的pom.xml配置示例,并强调了MyBatis相对于JDBC的优势在于将SQL语句配置在单独的文件中,简化了代码。此外,作者还分享了GitHub上的源码链接供读者参考。

Maven+mybatis+mysql项目实践(附demo)

准备工作
- Maven搭建与工程建立(参考http://blog.csdn.net/kevinbetterq/article/details/77967856
- mysql安装

接下来我们的项目在我上一篇Maven创建Web项目的基础上进行添加:
( 文章末尾附上实现的一个demo )


1、数据库建测试表

这里写图片描述

2、修改pom.xml文件

添加以下代码,加入依赖:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
    </dependency>
</dependencies>

完整pom.xml

<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.qwk</groupId>
    <artifactId>spring_mybatis_1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>
</project>
3、创建实体类,配合数据库

这里写图片描述

package com.qwk.entity;
public class Book {

    private int id;
    private String bookName;

    public int getId() {
        return id;
    }

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

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

}
4、创建访问接口 BookDaoI.java

这里写图片描述

package com.qwk.dao;
import java.util.List;
import com.qwk.entity.*;

public interface BookDaoI {
    public List<Book> getAllBook();
}
5、新建映射文件 BookMapper.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.qwk.dao.BookDaoI">
    <select id="getAllBook" parameterType="int" resultType="Book">
        select * from tb_book 
    </select>
</mapper>
6、新建MyBatis配置文件 MyBatisCfg.xml

这里写图片描述

  • 新增db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
  • 新增MyBatisCfg.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">
<configuration>
    <!-- 指定数据库连接信息的位置 -->
     <properties resource="db.properties"></properties> 

    <!--com.lmei.entity下的所有类定义别名 -->
    <typeAliases>
        <package name="com.qwk.entity"/>
    </typeAliases>

     <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <!--注册BookMapper映射-->
        <mapper resource="com/qwk/mapper/BookMapper.xml" />
    </mappers>
</configuration>
7、新增MyBatisUtil工具类

这里写图片描述

package com.qwk.util;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class MyBatisUtil {

    /**
     * 获取SqlSessionFactory
     * @return SqlSessionFactory
     */
    public static SqlSessionFactory getSqlSessionFactory() {
        String resource = "MyBatisCfg.xml";
        InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        return factory;
    }

    /**
     * 获取SqlSession
     * @return SqlSession
     */
    public static SqlSession getSqlSession() {
        return getSqlSessionFactory().openSession();
    }

    /**
     * 获取SqlSession
     * @param isAutoCommit 
     *         true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
     *         false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
     * @return SqlSession
     */
    public static SqlSession getSqlSession(boolean isAutoCommit) {
        return getSqlSessionFactory().openSession(isAutoCommit);
    }
}
8、创建Impl类实现接口

这里写图片描述

package com.qwk.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.qwk.dao.BookDaoI;
import com.qwk.entity.Book;
import com.qwk.util.MyBatisUtil;

public class BookImpl implements BookDaoI{

    public List<Book> getAllBook() {
        //获得会话对象
        SqlSession session= MyBatisUtil.getSqlSession(true); 
        try {          
            BookDaoI bookDao = session.getMapper(BookDaoI.class);
            return bookDao.getAllBook();
        } finally {
            session.close();
        }
    }
}
9、新增log4j2.xml配置文件

可以进行日志的记录,因为前面的导入,不添加的话项目会出现错误
这里写图片描述

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
<Configuration status="off" monitorInterval="1800">    
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>        
    </Appenders>

    <Loggers>            
        <Root level="debug">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
测试: 创建类TestBookImpl.java

这里写图片描述

package com.qwk.test;

import static org.junit.Assert.*;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Test;
import com.qwk.dao.BookDaoI;
import com.qwk.dao.impl.BookImpl;
import com.qwk.entity.Book;

public class TestBookImpl {
    static BookDaoI bookDao;

    @BeforeClass
    public static void beforeClass() {
        bookDao = new BookImpl();
    }

    @Test
    public void testGetAllBookTypes(){
        List<Book> books = bookDao.getAllBook();
        for(Book book:books){
            System.out.println(book.getBookName());
        }
        assertNotNull(books);
    }
}

项目右键->Run As->JUnit Test,可以看到成功输出

这里写图片描述


这样就实现了 Maven+mybatis+mysql 的一个小项目实例了!!

感受:
mybatis与直接的JDBC区别,就在于mybatis将对数据库的sql语句访问都放在了一个配置文件中,这样拆分了代码部分,只需要配置一下就可以实现数据库的sql访问了。


后续还会继续整合Spring和SpringMVC,大家有需要可以看一下:
Spring整合MyBatis(Maven+spring+MyBatis+mysql实践附demo)
SSM框架整合(Maven+Spring+SpringMVC+Mybatis+mysql 附demo实例)

最后附上我的github源码,一个mybatis连接mysql的小demo:
https://github.com/KevinBetterQ/SpringMVC_Mybatis/tree/517b1d1b6f442d8f567ef72212d137213c5bb05f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值