SSM(Spring+SpringMVC+Mybatis)框架整合

database

1、数据准备

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `admin`

-- ----------------------------

DROP TABLE IF EXISTS `admin`;

CREATE TABLE `admin` (

`a_id` int(11) NOT NULL AUTO_INCREMENT,

`a_name` varchar(20) NOT NULL,

`a_pwd` varchar(20) NOT NULL,

PRIMARY KEY (`a_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of admin

-- ----------------------------

-- ----------------------------

-- Table structure for `book`

-- ----------------------------

DROP TABLE IF EXISTS `book`;

CREATE TABLE `book` (

`b_id` int(11) NOT NULL AUTO_INCREMENT,

`b_ISBN` varchar(20) NOT NULL,

`b_name` varchar(40) NOT NULL,

`b_author` varchar(20) NOT NULL,

`b_cid` int(11) NOT NULL,

`b_cover` varchar(50) NOT NULL,

`b_publish_time` date NOT NULL,

`b_remark` varchar(255) NOT NULL,

`b_num` int(11) NOT NULL,

PRIMARY KEY (`b_id`),

KEY `b_cid` (`b_cid`),

CONSTRAINT `book_ibfk_1` FOREIGN KEY (`b_cid`) REFERENCES `category` (`c_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of book

-- ----------------------------

-- ----------------------------

-- Table structure for `category`

-- ----------------------------

DROP TABLE IF EXISTS `category`;

CREATE TABLE `category` (

`c_id` int(11) NOT NULL AUTO_INCREMENT,

`c_name` varchar(20) NOT NULL,

PRIMARY KEY (`c_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of category

-- ----------------------------

-- ----------------------------

-- Table structure for `log`

-- ----------------------------

DROP TABLE IF EXISTS `log`;

CREATE TABLE `log` (

`l_id` int(11) NOT NULL AUTO_INCREMENT,

`l_uid` int(11) NOT NULL,

`l_bid` int(11) NOT NULL,

`l_begintime` date NOT NULL,

`l_endtime` date NOT NULL,

PRIMARY KEY (`l_id`),

KEY `l_uid` (`l_uid`),

KEY `l_bid` (`l_bid`),

CONSTRAINT `log_ibfk_1` FOREIGN KEY (`l_uid`) REFERENCES `user` (`u_id`),

CONSTRAINT `log_ibfk_2` FOREIGN KEY (`l_bid`) REFERENCES `book` (`b_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of log

-- ----------------------------

-- ----------------------------

-- Table structure for `user`

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`u_id` int(11) NOT NULL AUTO_INCREMENT,

`u_name` varchar(20) NOT NULL,

`u_pwd` varchar(20) NOT NULL,

PRIMARY KEY (`u_id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of user

-- ----------------------------

INSERT INTO `user` VALUES ("1", "鲁班", "1234567890");

INSERT INTO `user` VALUES ("2", "杜甫", "123456");

View Code

2、新建项目

3、完善项目结构

4、导入所需jar包

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

</properties>

<dependencies>

<!--Spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>4.3.13.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>4.3.13.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>4.3.13.RELEASE</version>

</dependency>

<!--Mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.5</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.1</version>

</dependency>

<!--junit -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

<!--log4j -->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

<!--mysql连接驱动 -->

<dependency>

<groupId>mysql</groupId>

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

<version>5.1.43</version>

</dependency>

<!--c3p0连接池-->

<dependency>

<groupId>c3p0</groupId>

<artifactId>c3p0</artifactId>

<version>0.9.1.2</version>

</dependency>

<!--jsp-->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<version>2.0</version>

</dependency>

<!--jstl-->

<dependency>

<groupId>javax.servlet.jsp.jstl</groupId>

<artifactId>jstl-api</artifactId>

<version>1.2</version>

</dependency>

<!--servlet-->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>3.0</version>

</dependency>

<!--lombok-->

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.16.18</version>

</dependency>

</dependencies>

View Code

5、编写实体类

User:

package com.ssm.pojo;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data

@AllArgsConstructor

@NoArgsConstructor

publicclass User implements Serializable {

private Integer id;

private String name;

private String pwd;

}

View Code

 

6、编写dao层

UserDao:

package com.ssm.dao;

import com.ssm.pojo.User;

import org.springframework.stereotype.Repository;

import java.util.List;

@Repository("userDao")

publicinterface UserDao {

void addUser(User user);

void deleteUser(Integer id);

void updateInfo(User user);

List<User> queryAll();

User queryById(Integer id);

}

View Code

 

7、根据dao层编写xml映射配置文件

UserMapper.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.ssm.dao.UserDao">

<resultMap id="userMapper" type="User">

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

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

<result property="pwd" column="u_pwd"/>

</resultMap>

<insert id="addUser" parameterType="User">

insert into user(u_name,u_pwd) values (#{name},#{pwd})

</insert>

<select id="queryAll" resultMap="userMapper">

select u_id,u_name,u_pwd from user

</select>

<select id="queryById" resultMap="userMapper" parameterType="int">

select * from user where u_id = #{id}

</select>

<update id="updateInfo" parameterType="User">

update user set u_name = #{name},u_pwd = #{pwd} where u_id = #{id}

</update>

<delete id="deleteAdmin" parameterType="int">

delete from user where u_id = #{id}

</delete>

</mapper>

View Code

8、编写Mybatis主配置文件(mybatis-config.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>

<typeAliases>

<package name="com.ssm.pojo"/>

</typeAliases>

<mappers>

<mapper resource="mapper/UserMapper.xml"/>

</mappers>

</configuration>

View Code

9、编写Spring全局配置文件(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: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">

<!--开启组件注解扫描-->

<context:component-scan base-package="com.ssm">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

<!--引入数据库配置文件-->

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

<!--配置c3p0数据源-->

<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}"/>

</bean>

<!--配置SqlSessionFactory-->

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

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

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

</bean>

<!--开启动态扫描dao层接口-->

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

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

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

</bean>

<!--事务-->

<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

</bean>

</beans>

View Code

10、编写service层

IUserService:

package com.ssm.service;

import com.ssm.pojo.User;

import java.util.List;

publicinterface IUserService {

void addUser(User user);

void deleteUser(Integer id);

void updateInfo(User user);

List<User> queryAll();

User queryById(Integer id);

}

View Code

UserService:

package com.ssm.service.impl;

import com.ssm.dao.UserDao;

import com.ssm.pojo.User;

import com.ssm.service.IUserService;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import java.util.List;

@Service("userService")

publicclass UserService implements IUserService {

@Resource

private UserDao userDao;

@Override

publicvoid addUser(User user) {

userDao.addUser(user);

}

@Override

publicvoid deleteUser(Integer id) {

userDao.deleteUser(id);

}

@Override

publicvoid updateInfo(User user) {

userDao.updateInfo(user);

}

@Override

public List<User> queryAll() {

return userDao.queryAll();

}

@Override

public User queryById(Integer id) {

return userDao.queryById(id);

}

}

View Code

11、spring整合Mybatis完成(测试)

import com.ssm.pojo.User;

import com.ssm.service.IUserService;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

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

import javax.annotation.Resource;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = "classpath:ApplicationContext.xml")

publicclass UserTest {

@Resource

IUserService userService;

@Test

publicvoid getAll() {

List<User> users = userService.queryAll();

for (User user : users) {

System.out.println(user);

}

}

}

View Code

12、编写web.xml

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

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

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

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

<display-name>Archetype Created Web Application</display-name>

<!--配置DispatcherServlet前端控制器-->

<servlet>

<servlet-name>dispatcherServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:ApplicationContext.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>dispatcherServlet</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<!--乱码过滤器-->

<filter>

<filter-name>characterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>characterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

View Code

13、编写springmvc配置文件(springmvc.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"

xmlns:mvc="http://www.springframework.org/schema/mvc"

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

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

https://www.springframework.org/schema/mvc/spring-mvc.xsd">

<!--资源过滤器-->

<mvc:default-servlet-handler/>

<!--注解驱动-->

<mvc:annotation-driven/>

<!--注解扫描-->

<context:component-scan base-package="com.ssm.controller"/>

<!--视图解析器-->

<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/Pages/"/>

<property name="suffix" value=".jsp"/>

</bean>

</beans>

View Code

14、spring整合springmvc(ApplicationContext.xml引入springmvc.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">

<!--引入springmvc配置文件-->

<import resource="springmvc.xml"/>

<!--开启组件注解扫描-->

<context:component-scan base-package="com.ssm">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

<!--引入数据库配置文件-->

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

<!--配置c3p0数据源-->

<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}"/>

</bean>

<!--配置SqlSessionFactory-->

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

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

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

</bean>

<!--开启动态扫描dao层接口-->

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

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

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

</bean>

<!--事务-->

<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

</bean>

</beans>

View Code

15、编写controller层

UserController:

package com.ssm.controller;

import com.ssm.pojo.User;

import com.ssm.service.IUserService;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;

@RequestMapping("/user")

@Controller

publicclass UserController {

@Resource

IUserService userService;

@RequestMapping("getUserInfo")

public String test(Model model) {

User user = userService.queryById(1);

model.addAttribute("user", user);

return "success";

}

}

View Code

16、创建必要的测试页面

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title>Title</title>

</head>

<body>

<a href="/user/getUserInfo">点我测试!</a>

</body>

</html>

View Code

success.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>

<html>

<head>

<title>Title</title>

</head>

<body>

Name:${user.name}

PassWord:${user.pwd}

</body>

</html>

View Code

17、整合完成,测试喽!

18、晒上项目结构图

19、其他配置文件

数据库配置文件:

jdbc.driver=com.mysql.jdbc.Driver

#数据库地址

jdbc.url=jdbc:mysql://localhost:3306/booksys?useUnicode=true&characterEncoding=utf8

#用户名

jdbc.username=root

#密码

jdbc.password=123456

#最大连接数

c3p0.maxPoolSize=30

#最小连接数

c3p0.minPoolSize=10

#关闭连接后不自动commit

c3p0.autoCommitOnClose=false

#获取连接超时时间

c3p0.checkoutTimeout=10000

#当获取连接失败重试次数

c3p0.acquireRetryAttempts=2

View Code

log4j日志配置文档:

log4j.rootLogger=debug,stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

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

# Pattern to output the caller"s file name and line number.

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB

# Keep one backup file

log4j.appender.R.MaxBackupIndex=5

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

log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

View Code

以上是 SSM(Spring+SpringMVC+Mybatis)框架整合 的全部内容, 来源链接: utcz.com/z/531861.html

回到顶部