使用Eclipse,Maven简单搭建Spring+MyBatis

1、新建一个Maven Project

使用Eclipse自带的Maven插件,自动创建一个基于Maven的Web工程;(前提是开发环境一定要配置好Maven)

选择archetype为maven-archetype-webapp:

设置:

GroupId:com.study(正式项目为公司网址倒写)

ArtifactId:SMPro(项目名称,[模块名称])

2、修复jsp页面报错

jsp页面报错,因为在构建路径中没有javax.servlet.http.HttpServlet,在pom.xml文件中添加servlet依赖包:


<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

<!-- 只在编译和测试时运行 -->

<scope>provided</scope>

</dependency>

3、完善项目目录结构

在Navigator视图下,补全目录结构如下:

右键项目-Properties,打开Java Build Path,补全Source下的目录,并观察Default output folder是否为***/target/classes目录;

4、添加该测试项目所需依赖jar包:


<dependencies>

<!-- 使用junit4 -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.11</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

<!-- 只在编译和测试时运行 -->

<scope>provided</scope>

</dependency>

<!-- 补全项目依赖 -->

<!-- 1:日志

slf4j是规范/接口

日志实现:log4j,logback,common-logging

这里使用:slf4j + log4j

-->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.2</version>

</dependency>

<!-- 2:数据库相关依赖 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.39</version>

<scope>runtime</scope>

</dependency>

<!-- c3p0数据库连接池 -->

<dependency>

<groupId>c3p0</groupId>

<artifactId>c3p0</artifactId>

<version>0.9.1.2</version>

</dependency>

<!-- 3:DAO框架依赖:MyBatis依赖 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.3.0</version>

</dependency>

<!-- MyBatis自身实现的spring整合依赖 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.3</version>

</dependency>

<!-- 4:spring依赖 -->

<!-- 1) spring核心依赖-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>4.1.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>4.1.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.1.7.RELEASE</version>

</dependency>

<!-- 2) spring dao层依赖-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>4.1.7.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>4.1.7.RELEASE</version>

</dependency>

</dependencies>

5、建库建表


--创建数据库

CREATE DATABASE sm_project;

USE sm_project;

--创建用户表

CREATE TABLE tb_user(

`user_id`                            INT PRIMARY KEY AUTO_INCREMENT COMMENT ‘用户ID‘,

`user_name`       VARCHAR(30) COMMENT ‘用户名‘,

`user_birthday`   DATE COMMENT ‘用户生日‘,

`user_salary`              DOUBLE COMMENT ‘用户工资‘

)ENGINE=InnoDB DEFAULT CHARSET=UTF8 COMMENT=‘用户表‘;

6、创建实体类


@SuppressWarnings("serial")

public class User implements Serializable {

private int id;

private String name;

private Date birthday;

private double salary;

//setter()/getter()/toString()略

}

7、定义DAO接口


public interface IUserDAO {

public void insert(User user);

public void delete(int id);

public void update(User user);

public User findById(int id);

public List<User> findAll();

}

8、MyBatis中SQL映射文件:IUserDAO.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">

<!-- 其中命名空间指向与该文件同名的DAO层接口 -->

<mapper namespace="com.study.dao.IUserDAO">

<!-- 通过resultMap解决实体类属性与数据库字段名不一致的问题 -->

<resultMap type="com.study.entity.User" id="userResult">

<!--

其中id为主键,result为普通字段

property对应实体类属性,column对应字段名(更准确的说应该是查询结果集中的字段名)

-->

<id property="id" column="user_id"/>

<result property="name" column="user_name"/>

<result property="birthday" column="user_birthday"/>

<result property="salary" column="user_salary"/>

</resultMap>

<!-- 插入数据后获得自增主键的值 -->

<insert id="insert" keyProperty="id" keyColumn="user_id">

INSERT INTO tb_user

(user_name,user_birthday,user_salary)

VALUES

(#{name},#{birthday},#{salary})

</insert>

<!-- 修改用户内容 -->

<update id="update">

UPDATE tb_user

SET

user_name=#{name},

user_birthday=#{birthday},

user_salary=#{salary}

WHERE

user_id=#{id}

</update>

<!-- 根据id删除用户 -->

<delete id="delete">

DELETE FROM tb_user WHERE user_id=#{id}

</delete>

<!-- 根据id查询用户 -->

<select id="findById" resultMap="userResult">

SELECT user_id,user_name,user_birthday,user_salary FROM tb_user WHERE user_id=#{id}

</select>

<!-- 查询所有用户 -->

<select id="findAll" resultMap="userResult">

SELECT user_id,user_name,user_birthday,user_salary FROM tb_user

</select>

</mapper>

9、MyBatis的配置文件:mybatis-config.xml

虽然后面使用Spring托管MyBatis,但是对于MyBatis的专属设置还是需要在这里设置;


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

<!-- 配置全局属性 -->

<settings>

<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->

<setting name="useGeneratedKeys" value="true"/>

<!-- 使用列别名替换列名 默认:true -->

<setting name="useColumnLabel" value="true"/>

<!-- 开启驼峰命名转换 -->

<setting name="mapUnderscoreToCamelCase" value="true"/>

</settings>

</configuration>

10、Spring与MyBatis整合配置文件:spring-mybatis.xml


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="

       http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/context

       http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 配置整合MyBatis -->

<!-- 1:配置数据库相关参数 properties属性:${url} -->

<context:property-placeholder location="classpath:jdbc.properties" />

<!-- 2:数据库连接池 -->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<!-- 配置连接池属性 -->

<property name="driverClass" value="${jdbc.driver}" />

<property name="jdbcUrl" value="${jdbc.url}" />

<property name="user" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<!-- c3p0连接池的私有属性 -->

<property name="maxPoolSize" value="${maxPoolSize}" />

<property name="minPoolSize" value="${minPoolSize}" />

<!-- 关闭连接后不自动commit -->

<property name="autoCommitOnClose" value="${autoCommitOnClose}" />

<!-- 获取连接超时时间 -->

<property name="checkoutTimeout" value="${checkoutTimeout}" />

<!-- 当获取连接失败重试次数 -->

<property name="acquireRetryAttempts" value="${acquireRetryAttempts}" />

</bean>

<!-- spring + MyBatis 精华 -->

<!-- 约定大于配置 -->

<!-- 3:配置SqlSessionFactory对象 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<!-- 注入数据库连接池 -->

<property name="dataSource" ref="dataSource"/>

<!-- 配置MyBatis全局配置文件:mybatis-config.xml -->

<property name="configLocation" value="classpath:mybatis-config.xml"/>

<!-- 扫描entity包 使用别名 org.asset.entity.User -> User -->

<property name="typeAliasesPackage" value="com.study.entity"/>

<!-- 扫描sql配置文件:mapper需要的xml文件 -->

<property name="mapperLocations" value="classpath:mapper/*.xml"/>

</bean>

<!-- 4:配置扫描DAO接口包,动态实现DAO接口,并注入到spring容器中 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<!-- 给出需要扫描DAO接口包 -->

<property name="basePackage" value="com.study.dao"/>

<!-- 注入sqlSessionFactory -->

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

</bean>

</beans>

11、数据库连接配置文件:jdbc.properties


#jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/sm_project?useUnicode=true&characterEncoding=utf-8

jdbc.username=root

jdbc.password=

maxPoolSize=30

minPoolSize=10

autoCommitOnClose=false

checkoutTimeout=1000

acquireRetryAttempts=2

12、日志配置文件:log4j.properties


log4j.rootLogger=DEBUG, Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

13、测试


package com.study.dao;

import java.util.Date;

import java.util.List;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.study.entity.User;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration({"classpath:spring-mybatis.xml"})

public class IUserDAOTest {

private Logger logger = LoggerFactory.getLogger(IUserDAOTest.class);

@Autowired

private IUserDAO userDAO;

@Test

public void testInsert() {

User user = new User();

user.setBirthday(new Date());

user.setName("James");

user.setSalary(15000.0);

this.userDAO.insert(user);

logger.info("insert the user={}",user);

this.userDAO.delete(user.getId());

User u = this.userDAO.findById(user.getId());

logger.info("after delete the user={}", u);

}

@Test

public void testUpdate() {

User user = new User();

user.setBirthday(new Date());

user.setName("Daniel");

user.setSalary(13000.0);

logger.info("before update the user={}", user);

this.userDAO.insert(user);

user.setSalary(22000.0);

this.userDAO.update(user);

User u = this.userDAO.findById(user.getId());

logger.info("after update the user={}", u);

this.userDAO.delete(u.getId());

}

@Test

public void testFindAll() {

List<User> users = this.userDAO.findAll();

logger.info("all the users={}", users);

}

}

打印日志结果如下:


2017-08-24 15:21:06,805 [main] INFO  [com.study.dao.IUserDAOTest] - all the users=[User [id=1, name=John, birthday=Wed Aug 23 00:00:00 CST 2017, salary=10000.0], User [id=2, name=Smith, birthday=Thu Aug 24 00:00:00 CST 2017, salary=20000.0], User [id=4, name=King, birthday=Thu Aug 24 00:00:00 CST 2017, salary=30000.0]]


2017-08-24 15:21:06,818 [main] INFO  [com.study.dao.IUserDAOTest] - insert the user=User [id=11, name=James, birthday=Thu Aug 24 15:21:06 CST 2017, salary=15000.0]

2017-08-24 15:21:06,825 [main] INFO  [com.study.dao.IUserDAOTest] - after delete the user=null


2017-08-24 15:21:06,834 [main] INFO  [com.study.dao.IUserDAOTest] - before update the user=User [id=12, name=Daniel, birthday=Thu Aug 24 00:00:00 CST 2017, salary=13000.0] 2017-08-24 15:21:06,840 [main] INFO  [com.study.dao.IUserDAOTest] - after update the user=User [id=12, name=Daniel, birthday=Thu Aug 24 00:00:00 CST 2017, salary=22000.0]

时间: 2024-12-09 13:22:16

使用Eclipse,Maven简单搭建Spring+MyBatis的相关文章

使用maven简单搭建Spring mvc + redis缓存

注:此文参考并整合了网上的文章 <spring缓存机制>:http://blog.csdn.net/sidongxue2/article/details/30516141 <配置 Spring4.0 注解Cache+Redis缓存>:http://blog.csdn.net/ouyhong123/article/details/52162951 <spring整合redis缓存,以注解(@Cacheable.@CachePut.@CacheEvict)形式使用>: ht

【Web】Eclipse + Maven + Struts搭建服务器

一.环境 系统:Windows7 IDE:Eclipse-Kepler Service Release 2 使用插件:Maven(请预先在电脑上安装Maven) 二.搭建 在Eclipse中新建一个Maven工程: 选择Maven Project. 注意选择maven-archetype-web选项.Catalog处,点击右边的Configuration按钮,弹出对话框: 点击右边的Add remote Catalog,在Catalog file输入框中输入http://repo1.maven.

Maven构建 SpringMVC+Spring+MyBatis 环境整合

目录 1. Maven 项目搭建 2. Maven 插件生成 MyBatis 代码 3. 待续 ... 开发环境 开发环境请尽量保持一致,不一致的情况可能存在问题. JDK 1.7 MyEclipse 8.5 Maven 3.0.4 Spring 4.2.5.RELEASE MyBaties 3.3.1 Maven 项目搭建 现在代码管理一般都是采用Maven管理,所以现在构建项目的不二选择就是用它,百度一下介绍文档很多,环境配置这里不做介绍,下面给出建立web项目相关步骤. 1. 新建一个Ma

使用maven+tomcat搭建spring框架

1.maven插件可以通过eclipse的在线下载安装, 在目录config/setting.xml配置文件,local变量设置maven的仓库地址 将eclipse的maven配置指向maven的setting.xml的配置文件. 新建maven工程会产生一个pom文件:提供几个需要自己更改的地方 <groupId>spring</groupId> <artifactId>spring-mybatis</artifactId> <version>

eclipse +maven+ssm搭建矿建

记录一下搭建框架的过程1.下载最新的eclipse   https://www.eclipse.org/downloads/download.php?file=/oomph/epp/neon/R/eclipse-inst-win64.exe 安装就不说了.直接解压就行.  解压时报错,  “version 1.7.0_79 of the jvm is not suitable for this product.Version:1.8 or greater is required” ,这是版本不支

Maven手工搭建 Spring Boot工程

1.新建空的Maven项目. 2.修改pom.xml: 添加Spring Boot的父级依赖(spring - boot - starter - parent),这是一个特殊的starter,用于提供相关的Maven默认依赖 -- 这样的项目就是Spring Boot项目了.默认依赖,即版本默认,一些常用的依赖可以去掉<version>标签.至于Spring Boot提供了哪些jar包的依赖,以及版本默认为多少,可查看在本地仓库(前提是本地有)的 \org\springframework\bo

maven项目 实现 spring mybatis 两个框架整合

1.maven项目 src main java java源文件 resources 配置文件 beans.xml spring配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i

eclipse - maven环境搭建

第一步:下载maven 登录maven官网https://maven.apache.org/ 进入下载页面,点击下载 下载完毕后解压,然后放入一个你自定义的目录位置 本人在E盘新建了一个maven目录 配置MAVEN_HOME变量 将加入到path路径下 %MAVEN_HOME%\bin\ cmd窗口验证是否安装成功 输入mvn -v 修改安装目录下的setting.xml这个文件 三.配置Maven本地仓库 1. 在E:\maven目录下新建maven-repository文件夹,该目录用作m

android+eclipse+maven环境搭建

1.安装jdk,设置环境变量  略2.安装android  sdk下载地址:http://developer.android.com/sdk/index.html  设置环境变量:新建变量名:ANDROID_SDK_HOME,变量值是android-SDK的路径:D:\adt-bundle-windows-x86-20140321\sdk在path路径后面添加:  ;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools; 检查是否安