一.在idea中配置创建maven
1.在Idea中配置maven
(1)、打开Idea,点击File,然后点击Settings,进入设置,或者直接按Ctrl+Alt+S进入设置
(2)、先在左上角的搜索框输入maven,找到maven后单击,然后在右边的maven home path的右边选择你的maven安装路径,选择到根目录就好了,然后点击确定
(3)、Local repository 是maven的本地仓库,默认路径是C:\Users\Administrator.m2\repository,可以使用默认路径也可以在settings.xml中配置本地maven仓库,看自己需要,一般在settings.xml中配置好了这里会自动检测你在settings.xml中配置的仓库路径
2.在Idea中创建maven项目
(1)、点击File,选择New,再点击Project
(2)别选错webapp了
(3)、接下来输入各类名称,填完后直接next下一步,名称具体含义如下图:
(4)、配置maven信息,具体操作如下
(5)、添加配置 DarchetypeCatalog=internal,添加原因:每次创建maven项目时, 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>
1.修改maven主题:file-->settings-->appearance-->theme
2.首先打开IDEA后点击settings ,然后在VM Options内添加-DarchetypeCatalog=internal 运行参数
(不做上面操作的话会导致maven 骨架生成速度缓慢到令人发指,卡在running tmp archetypexxxtmp这一步)
3.创建maven web项目,按照下图顺序点击后点击下一步
4.groupid表示项目的包名,artifactid表示项目名
5.选择maven版本和配置文件等
6.工程名和工程目录,点击finish完成创建
7.为了在pom.xml文件中添加依赖之后自动引入jar,点击右下角红圈的Enable Auto-Import选项,左上角红圈可以看到mavenproject的项目结构
8.然后就能在pom.xml文件中自行添加maven依赖
9.添加maven 结构目录
1>给项目添加web:file-->project structure-->进行如下图操作(为项目配置编译路径)
2>artifacts 配置
Artifacts是maven中的一个概念,表示某个module要如何打包,例如war exploded、war、jar、ear等等这种打包形式;一个module有了Artifacts就可以部署到应用服务器中了!Facets表示某个module有的特征,比如web、strtus2、spring、hibernate等;
3>目录结构添加
如上图所示,当控制台输出BUILD SUCESS的时候,这意味着 Maven 已经创建完成。但是,如果我们仔细观察 IDEA 自动为我们生成的 Maven 目录结构,会发现这与我们认知中的 Maven 项目的目录结构大不相同,它没有与main同级的test目录、没有resources目录、也没有java目录,甚至连源目录都没有标记出来,为啥?实际上,Maven 并没有强制我们必须创建test、resources、java这样的目录,之所以建立这样的目录结构,仅仅是出于我们的习惯以及方便管理项目而已。接下来,我们就手动创建test、resources、java这样的结构,并标记java为Sources Root,即源目录:
依次点击File、Project Structure选项:
现在,选择java目录,点击Mark as: Sources即可将java目录标记为源目录:
最终结构显示如下图:
9.添加tomcat容器
先打开全局设置,添加一个tomcat容器
10.然后就能在Run/Debug Configurations里设置tomcat了
(注意:如果指定了项目的url路径那么application context也要指定路径,见下图红圈)
11.添加完成tomcat后点击运行,运行成功后如下图所示,项目部署成功
(注意:请先在命令行停止已经运行的系统的tomcat服务,可使用命令systemctl stop tomcat8,否则无法启动idea的tomcat服务)