Idea中maven环境下搭建MyBatis项目(一)

1、选择Maven框架下的webapp

1.1 添加新节点:archetypeCatalog=internal

1.2 或者在settings------->Build,Execution,Deployment——>Maven——>VM Options设置 -DarchetypeCatalog=internal

2、在Maven的pom文件中引入MyBatis需要用的jar包:

创建对应的java项目,引入需要的mybatis需要的jar,以及连接mysql数据库的jar!

asm-3.3.1.jar:操作Javaj字节码的类库

cglib-2.2.2.jar:用来动态集成Java类或实现接口

commons-logging-1.1.1.jar:用于通用日志处理

javassist-3.17.1-GA.jar:分析、编辑和创建Java字节码的类库

log4j-1.2.17.jar:日志系统

slf4j-api-1.7.5.jar:日志系统的封装,对外提供统一的API接口

slf4j-log4j12-1.7.5.jar:slf4j对log4j的对应驱动,完成slf4j绑定log4j

mybatis-3.2.2.jar

mysql-connector-java-5.1.7-bin.jar/3

<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/maven-v4_0_0.xsd">
    <parent>
        <artifactId>Book_08</artifactId>
        <groupId>cn.alexander</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>MyBatis</artifactId>
    <packaging>war</packaging>
    <name>MyBatis Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.3</version>
            <scope>test</scope>
        </dependency>

        <!--配置mybatis需要的依赖包-->
        <dependency>
            <groupId>asm</groupId>
            <artifactId>asm</artifactId>
            <version>3.3.1</version>
        </dependency>

        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.17.1-GA</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>

    </dependencies>
    <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.xml</include>
               </includes>
           </resource>
       </resources>
    </build>
</project>

3、创建MyBatis核心配置文件mybatis-config.xml

MyBatis核心配置文件主要用于配置数据库连接和MyBatis运行时所需的各种特性,包含了设置和影响MyBatis行为的属性。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTDConfig 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.properties"></properties>
    <settings>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="true"></setting>
    </settings>
   <!-- <settings>
        <setting name="autoMappingBehavior" value="NONE"/>
    </settings>-->
    <typeAliases>
    <package name="cn.alexander.entity"></package>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>
      <!--  <mapper resource="cn/alexander/dao/IStudentDAO.xml"/>-->
        <package name="cn.alexander.dao"></package>
    </mappers>
</configuration>

4、创建数据库表

5、在idea中创建实体类

package cn.alexander.entity;

import java.io.Serializable;

public class Dept implements Serializable {
    private Integer deptno;
    private String deptname;

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }

    public String getDeptname() {
        return deptname;
    }

    public void setDeptname(String deptname) {
        this.deptname = deptname;
    }

    public Dept(Integer deptno, String deptname) {
        this.deptno = deptno;
        this.deptname = deptname;
    }

    public Dept(String deptname) {
        this.deptname = deptname;
    }

    public Dept() {
    }

    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", deptname=‘" + deptname + ‘\‘‘ +
                ‘}‘;
    }
}

6、创建接口

package cn.alexander.dao;

import cn.alexander.entity.Dept;

import java.util.List;

public interface IDeptDAO {
    // 查询所有的部门
    public List<Dept> findAll();
}

7、创建接口的实现类

7.1使用单例创建seession

package cn.alexander.util;

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;

/**
 * SqlSessionFactory的单例类
 */
public class SessionFactoryUtil {
    // 创建需要单例的对象实例
    private static SqlSessionFactory sessionFactory;

    // 私有化构造
    private SessionFactoryUtil(){}

    // 对外提供访问接口
    public static synchronized SqlSession getSession(){
        try {
            InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
            // 判断SqlSessionFactory是否为空,如果为空则创建
            if(sessionFactory==null){
                sessionFactory = new SqlSessionFactoryBuilder().build(stream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sessionFactory.openSession();
    }

}

7.2通过session实现方法

package cn.alexander.dao;

import cn.alexander.entity.Dept;
import cn.alexander.util.SessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class IDeptDAOImpl implements IDeptDAO {
    public List<Dept> findAll() {
        // 获取session
        SqlSession session = null;
        List<Dept> depts = null;
        try{
            session = SessionFactoryUtil.getSession();
            IDeptDAO mapper = session.getMapper(IDeptDAO.class);
            depts = mapper.findAll();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            session.close();
        }
        return depts;
    }
}

8、接口对应的配置文件

<?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">
<!--映射文件的根节点
  namespace
-->
<mapper namespace="cn.alexander.dao.IDeptDAO">
    <select id="findAll" resultType="Dept">
        select * from dept
    </select>
</mapper>

修改pom.xml中的build节点。保证即使不在resources文件夹下的配置文件也能被读取

 <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.xml</include>
               </includes>
           </resource>
       </resources>
    </build>

9、主配置关联小配置

在mybatis-config.xml中用mappers节点使主配置关联到小配置

 <mappers>
      <!--  <mapper resource="cn/alexander/dao/IStudentDAO.xml"/>-->
        <package name="cn.alexander.dao"></package>
    </mappers>

10、编写测试类

package cn.alexander.test;

import cn.alexander.dao.IDeptDAO;
import cn.alexander.dao.IDeptDAOImpl;
import cn.alexander.entity.Dept;
import org.apache.log4j.Logger;
import org.junit.Test;

import java.util.List;

public class Test20170923 {
    Logger logger = Logger.getLogger(Test20170923.class);
    @Test
    public void findAll(){
        IDeptDAO iDeptDAO = new IDeptDAOImpl();
        List<Dept> depts = iDeptDAO.findAll();
        logger.debug(depts);
    }
}

11、测试类运行结果:

时间: 2024-10-10 19:28:02

Idea中maven环境下搭建MyBatis项目(一)的相关文章

Maven环境下多模块项目构建

Maven环境下多模块项目构建 一.新建项目 1.建立我们的父模块par 2.建立我们的子模块dao层 3.建立我们的子模块service层 4.建立我们的子模块web层 5.全部配置完成后,怎么把我们的四个项目关联起来 1)添加一个dao层 2)service里面添加对应的dao依赖 3)然后回到我们的web 4)把这4个项目安装到本地 选择Run 的第二个,然后输入:clean compile install 5)配置一个tomcat插件,为执行做准备

在linux环境下搭建Struts2项目运行环境

首先要先装java https://www.cnblogs.com/lamp01/p/8932740.html 然后装好tomcat https://www.cnblogs.com/yuhebin/p/8594774.html mysql装好 https://www.cnblogs.com/ytytzzz/p/11022801.html git装好 apt install git 全都装好之后用git把项目从github拿下来即可 原文地址:https://www.cnblogs.com/yty

【大数据系列】windows环境下搭建hadoop开发环境从hadoop URL读取数据

前言 搭建完hadoop集群之后在windows环境下搭建java项目进行测试 操作hdfs中的文件 版本一 package com.slp.hadoop274.hdfs; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;

java实战系列-实战中MAVEN私服的搭建

 实战中MAVEN私服的搭建 利用maven来管理项目的构建,报告和文档已经成为了我们现在的共识,任何开源软件基本都在使用,当然我们现在的大部分公司也基本都在使用,我把以前使用maven的一些经验在进行加工呈现给大家,希望可以帮助一些当前正在学习maven的初学者们还有刚毕业的学子们! 我会结合Eclipse+nexus+maven的实践来个大家做介绍! Nexus是Maven仓库管理器,虽然我们可以从Maven中央仓库下载所需要的构件(artifact),但这样会让我们的编译过程变得相当的慢

SSM——WEB环境下搭建框架(总结)

SSM--WEB环境下搭建框架(总结) (步骤跟随程序执行顺序) 一.web应用开始运行,首先进入web.xml中,执行spring环境搭建工作 1 <!-- 配置spring环境 --> 2 <context-param> 3 <param-name>contextConfigLocation</param-name> 4 <param-value>classpath:applicationContext.xml</param-value

Windows环境下搭建Cocos2d-x3.2环境并配置android交叉编译环境

一.软件 1)VS2012(C++11特性在VS2012以上可以使用):传送门: 2)Cocos2d-x官网源码:传送门:http://cocos2d-x.org/download 3)JDK:传送门:https://github.com/inferjay/AndroidDevTools/ 4)NDK:传送门:https://github.com/inferjay/AndroidDevTools/ 5)ANT:传送门:https://github.com/inferjay/AndroidDevT

明晚8点,捷微团队QQ群公开课,解说jeewx2.0版本号maven环境的搭建入门!

2014-08-13号晚8点,捷微团队QQ群公开课,解说jeewx2.0版本号maven环境的搭建入门! 讲师:刘强(团队成员) QQ群:287090836 (JAVA版本号微信开源项目) http://www.oschina.net/news/54344/jeewx-2-0 明晚8点,捷微团队QQ群公开课,解说jeewx2.0版本号maven环境的搭建入门!,布布扣,bubuko.com

windows环境下搭建ffmpeg开发环境

ffmpeg是一个开源.跨平台的程序库,可以使用在windows.linux等平台下,本文将简单讲解windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows 7,集成开发环境为Visual Studio 2005,ffmpeg版本为2.2.有人可能会说都什么年代了,还VS 2005,现在VS 2010/2012/2013都出了.本人电脑也安装了VS2010,每次打开,伴随着硬盘指示灯的闪烁,以及硬盘的吱吱响声,过了许久才弹出闪屏页面,此时你的思绪可能已经飘到了南极,启

Windows环境下搭建Objective-C开发环境

Windows环境下搭建Objective-C开发环境 目前来说,如果真的想用Xcode来运行Objective-C程序,那么可以用虚拟机装Mac OS X或者装黑苹果(在PC机上安装苹果的系统,不建议),不过这两种方式都有些麻烦,以下介绍GNUstep以及Code blocks来实现,具体方法如下. 在我的云盘下载所需工具:链接: http://pan.baidu.com/s/1i34b8wP 密码: wd9e 解压后按照一下顺序进行安装 gnustep-core-0.28.0-setup.e