MyBatis+Spring+Maven的简单整合Demo

本文主要是示范基于Maven的MyBatis+Spring的简单使用,其中主要涉及到的是MyBatis的配置使用,另外还有部分log4j的配置使用。

项目概述

本文项目是基于MyEclipse、JDK1.7、MySQL进行开发的,主要功能是通过MyBatis实现对User这个Bean类进行增删改查操作。

先展示下整个项目的结构:

新建web project

如图所示(勾选Maven支持):

一路next,勾选产生web.xml

最后生成的项目pom.xml文件中会有很多乱七八糟的<dependency>,可以将他们删了,本小项目中暂时用不掉这些。

准备数据库表

使用mybatis数据库,没有就新建一个。

use mybatis;

drop table if exists tb_user;
create table tb_user(
    id int primary key auto_increment comment ‘主键‘,
    username varchar(40) not null unique comment ‘用户名‘,
    password varchar(40) not null comment ‘密码‘,
    email varchar(40) comment ‘邮件‘,
    age int  comment ‘年龄‘,
    sex char(2) not null comment ‘性别‘
);

相关的Java处理类

  • 数据库表对应的实体类User.java

    (省略了相关的getter和setter)

package com.liuhao.entity;

public class User {
  private int id;
  private String username;
  private String password;
  private String sex;
  private String email;
  private int age;

  //getter() and  setter ()
}
  • UserDao.java,可以对User进行插入、更新、删除、查找、列出所有等操作:
package com.liuhao.dao;
import java.util.List;
import com.liuhao.entity.User;

public interface UserDao {
  public int insert(User user);
  public int update(User user);
  public int delete(String userName);
  public List<User> selectAll();
  public int countAll();
  public User findByUserName(String userName);
}
  • UserService接口:
package com.liuhao.service;
import java.util.List;
import com.liuhao.entity.User;

public interface UserService {
. public int insert(User user);
  public int update(User user);
  public int delete(String userName);
  public List<User> selectAll();
  public int countAll();
  public User findByUserName(String userName);
}
  • 实现service接口,执行dao操作:
package com.liuhao.service.impl;
import java.util.List;
import com.liuhao.dao.UserDao;
import com.liuhao.entity.User;
import com.liuhao.service.UserService;

public class UserServiceImpl implements UserService {

  public UserDao userDao;
  public UserDao getUserDao() {
    return userDao;
  }
  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }

  @Override
  public int insert(User user) {
    return userDao.insert(user);
  }

  @Override
  public int update(User user) {
    return userDao.update(user);
  }

  @Override
  public int delete(String userName) {
    return userDao.delete(userName);
  }

  @Override
  public List<User> selectAll() {
    return userDao.selectAll();
  }

  @Override
  public int countAll() {
    return userDao.countAll();
  }

  @Override
  public User findByUserName(String userName) {
    return userDao.findByUserName(userName);
  }
}

相关配置文件

  • Mapper文件配置/test/config/com/liuhao/dao/UserDao.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.liuhao.dao.UserDao">
  <!-- 查询表中记录总数 -->
  <select id="countAll" resultType="int">
    select count(*) c from tb_user
  </select>

  <!-- 查询表中的所有用户 -->
  <select id="selectAll" resultType="com.liuhao.entity.User">
    select * from tb_user order by
    username asc
  </select> 

  <!-- 向数据库中插入用户 -->
  <insert id="insert"   parameterType="com.liuhao.entity.User">
    insert into
    tb_user(username,password,email,sex,age)
    values(#{username},#{password},#{email},#{sex},#{age})
  </insert>

  <!-- 更新库中的用户 -->
  <update id="update" parameterType="com.liuhao.entity.User">
    update tb_user set
    username=#{username},password=#{password},email=#{email},sex=#{sex},age=#{age}
    where username=#{username}
  </update>

    <!-- 删除用户 -->
  <delete id="delete" parameterType="String">
    delete from tb_user where username=#{username}
  </delete>

    <!-- 根据用户名查找用户 -->
  <select id="findByUserName" parameterType="String"
    resultType="com.liuhao.entity.User">
    select * from tb_user where username=#{username}
  </select>

</mapper>
  • Mybatis应用配置文件/test/config/MyBatis-Configuration.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>
  <mappers>
    <mapper resource="com/liuhao/dao/UserDao.xml"/>
  </mappers>
</configuration>
  • Spring配置文件,本例中我们放在/test/config/applicationContext.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:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  <!-- 配置数据源 -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"></property>
    <property name="username" value="root"></property>
    <property name="password" value="123456"></property>
  </bean>
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="configLocation" value="classpath:MyBatis-Configuration.xml"></property>
    <property name="dataSource" ref="dataSource" />
  </bean>
  <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.liuhao.dao.UserDao"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
  </bean>
  <bean id="userService" class="com.liuhao.service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"></property>
  </bean>
</beans>
  • web.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  id="WebApp_ID" version="3.0">
  <display-name>test</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <!-- 配置上下文监听 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
  • 项目是基于Maven构建的,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>test</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>test</name>
  <description />
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- mybatis和spring相关 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-dao</artifactId>
      <version>2.0.5</version>
    </dependency>
    <!-- MySQL数据库驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.5</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
    <!-- JUnit测试框架 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <!-- log4j日志框架 -->
    <dependency>
      <groupId>org.apache.directory.studio</groupId>
      <artifactId>org.apache.logging.log4j</artifactId>
      <version>1.2.16</version>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
          <version>3.0</version>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
  • 另外项目中使用了log4j进行日志采集,配置如下:
#log4j.rootLogger=DEBUG,CONSOLE,A1
#log4j.rootLogger=INFO,CONSOLE,A2
log4j.rootLogger=DEBUG,INFO,CONSOLE,A1,A2,A3

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %c %-5p %m%n

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=D:/logs/debug.log
log4j.appender.A1.Threshold=INFO
log4j.appender.A1.ImmediateFlush=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %-25c -> %m%n

log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=D:/logs/log.log
log4j.appender.A2.Threshold=INFO
log4j.appender.A2.ImmediateFlush=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %-25c -> %m%n

log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.File=D:/logs/error.log
log4j.appender.A3.Threshold=ERROR
log4j.appender.A3.ImmediateFlush=true
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %-5p %-25c -> %m%n

log4j.logger.com.springframework=DEBUG
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

测试代码

如果按照上述代码进行部署,应该不会出问题。本人应为少加了MySQL的驱动,和同事搞了差不多一个上午。。。

- 基于JUnit的测试代码:

package com.liuhao.test;

import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.liuhao.entity.User;
import com.liuhao.service.UserService;

public class TestMyBatis {

  ApplicationContext context = null;
  UserService userService = null;

  @Before
  public void initContext() {
    this.context = new ClassPathXmlApplicationContext(
        "applicationContext.xml");
    this.userService = (UserService) context.getBean("userService");
  }

  @Test
  public void TestInsert() {
    User user = new User();
    // username需要是唯一的
    user.setUsername("刘哈哈");
    user.setPassword("passtest");
    user.setEmail("[email protected]");
    user.setSex("男");
    user.setAge(23);
    userService.insert(user);
  }

  @Test
  public void TestCountAll() {
    System.out.println("数据库中的记录条数:" + userService.countAll());
  }

  @Test
  public void TestSelectAll() {
    List<User> list = userService.selectAll();
    for (int i = 0; i < list.size(); i++) {
      User user = list.get(i);
      System.out.println("用户名:" + user.getUsername() + "\t密码:"
          + user.getPassword() + "\t邮箱:" + user.getEmail());
    }
  }

  @Test
  public void TestFindByName() {
    User user = userService.findByUserName("刘哈哈");
    System.out.println("用户名:" + user.getUsername() + "\t密码:"
        + user.getPassword() + "\t邮箱:" + user.getEmail());

  }

  @Test
  public void TestUpdate() {
    User user = new User();
    user.setUsername("刘哈哈");
    user.setPassword("xxxxxxxx");
    user.setEmail("[email protected]");
    user.setSex("男");
    user.setAge(23);
    userService.update(user);
  }

  @Test
  public void TestDelete() {
    userService.delete("刘哈哈");
  }
}


源码下载:http://download.csdn.net/detail/bruce_6/8876565

参考:http://www.cnblogs.com/dennisit/archive/2013/04/10/3012972.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 00:55:17

MyBatis+Spring+Maven的简单整合Demo的相关文章

集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

网页地址 http://blog.csdn.net/lpy3654321/article/details/31841573 项目设想,在项目开发中,我们的开发者大多数时间都在反复开发 相同的keyword,相同的语法. 但就在这种情况下还会常常发生语法的错误,并且每一个开发者的代码风格不同. 其它人员阅读困难.新人的学习成本也会添加. 这些问题会浪费非常多时间,也会影响到开发者的心情,和程序质量. 由这些问题我想的解决方法是 <代码生成工具> . 代码生成能够解决上述问题,加强约定. 对于普通

Mybatis 3.2.7 简单入门Demo

对最新版本 Mybatis 3.2.7 做了一个demo,做个记录 需要的基本jar: mybatis-3.2.7.jar mysql-connector-java-5.1.27.jar 首先配置xml文件 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config

自写开发平台ssmy_m(与代码生成) strust2 mybatis spring maven jquery

自己写的开发平台ssmy_m 与代码生成 ,strust2 mybatis spring maven jquery jqgrid jqueryui 有问题请留言,或QQ110146324 SVN上的代码基础功能已经都有了.美工没弄,有需要的自己改吧. 在/ssmy_m/src/main/webapp/common/include_com.jsp里引用.否则代码生成会有影响 开发平台 svn: https://m2.svnspot.com/lpy3654321.ssmy_m/ 开发平台页面 : 代

mybatis spring maven

maven版本:3.3.9  解压即可使用 spring版本:4.3.9  通过maven进行管理下载 mybatis版本:3.4.4 通过maven进行管理下载 mysql版本:5.7  connector也是通过maven进行下载 首先,使用maven一定要网速好一点,不然在线下载jar包会很慢,其次,关于仓库的问题,最好换成国内的阿里云的仓库,下载会更快. 具体为,修改maven的E:\Runtime\apache-maven-3.3.9\conf下的settings.xml文件: 在 <

spring与struts简单整合案例

Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! 步骤: 1)引入struts .jar相关文件 a.引入struts .jar相关文件 commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freemarker-2.3.19.jar javassist-3.11.0.GA.

springMVC+MyBatis+Spring+maven 框架整合

1.首先第一步.部署mybatis ; 1.1 下载myBatis MyBits前身是iBitis,相对于Hibernate而言,它是半自动化ORM框架.由于老板对性能要求的比较苛刻,不得不放弃我亲爱的hibernate,转而学习并使用mybatis,在此之前我对mybatis也并不熟悉,如有不对的地方,欢迎指正,也希望对想学习mybitis的同窗们有所帮助.       鉴于我的测试数据库是mysql,同仁们现在把mysql装好,然后准备好mysql驱动以及 下载mybitis(http://

Spring和redis简单测试demo

1.首先创建一个Maven工程 File --> New --> Other,然后选择Maven目录下的Maven Project,如下图: 然后在弹出的面板中选择配置后,下一步即可,如图: Create a simple project (skip archetype selection) :此选项表示跳过后续的配置选项框. Use default Workspace location:表示将项目放置到默认的工作区域下. 配置好后,Next下一步,再进行如下图的配置: 点击Finish后,便

Spring+SpringMVC+Hibernate简单整合(转)

SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,下面同样做一个简单的应用实例,介绍SpringMVC的基本用法,接下来的博客也将梳理一下Struts2和SpringMVC的一些异同,通过梳理和旧知识的联系,让学习的成本变低,花很短的时间就可以了解一门貌似新的技术,其实本质没变. 原文http://langgufu.iteye.com/blog/2088355 下面开始实例,这个实例的需求是对用户信息进行增删改查.首先创建一个web项目te

MyBatis+Spring轻量级整合(Maven)

Mybatis: 前身是ibatis,但由于种种原因,去年五月时改名为Mybatis,绝大多数API与机制没有变化,只是少数配置文件变动了.但是官网上有一个自动转换的工具,可以方便的将Ibatis系统转换为Mybatis. Spring: 采用3.x,这是因为Mybatis和Spring3.x有一个较好的结合体验,Maven库上有一个Mybatis-Spring结合包. 所需要采用的JAR包:(POM.xml) <dependency> <groupid>org.springfra