您的位置:首页 > 编程语言 > Java开发

Spring+SpringMVC+Mybatis 简单的整合实例

2017-05-18 16:53 405 查看
自己搭了一个SSM的简易框架,其中也遇到了很多问题,记录下来,遇到问题纠结是正常的,敲代码就是如此,慢慢磨,各种渠道磨,总会解决的。

工程总体目录如下图:



用到的 jar 包:



先导入jar包。

分成了四个配置文件+web.xml文件

【spring.xml[b]】:[/b]springMVC 的主要配置文件,配置比较简单,具体里面都写了注释,如下:

<!-- 组件扫描路径 -->
<context:component-scan base-package="com" >
</context:component-scan>

<!-- SpringMVC 激活基于注解的配置 -->
<mvc:annotation-driven />

<!-- 视图解析器配置 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/page/"/>
<property name="suffix" value=".jsp"/>
</bean>

【spring-mybatis.xml[b]】:[/b]spring和mybatis的整合配置文件

<!-- 1. 配置数据源 : DriverManagerDataSource -->
<bean id="dataSource"  class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"><value>${jdbc.driver}</value></property>
<property name="jdbcUrl"><value>${jdbc.url}</value></property>
<property name="user"><value>${jdbc.user}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
<property name="initialPoolSize" value="50" />
<property name="minPoolSize" value="20" />
</bean>

<!-- 2. mybatis的SqlSession的工厂,dataSource:引用数据源;configLocation:指向mybatis.xml   -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:config/mybatis.xml" />
</bean>

<!-- 3. DAO接口所在包名,Spring会自动查找其下的类,有了该配置可以不用写具体的DAO实现类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

【mybatis.xml[b]】:[/b]mybatis的配置文件,主要是mappers标签配置,上面的settings是mybatis的参数,具体可以百度之

<configuration>
<!-- could be omitted in sake of defaults -->
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="aggressiveLazyLoading" value="false"/>
<setting name="autoMappingBehavior" value="FULL"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
</settings>

<!-- 配置mapper路径,如果有多个可以在下面添加多个 -->
<mappers>
<mapper resource="com/mapper/User.xml"/>
</mappers>
</configuration>

【jdbc.properties[b]】:[/b]数据库连接配置。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://X.X.X.X\:3306/XXX?useUnicode\=true&characterEncoding\=UTF-8
jdbc.user=root
jdbc.password=root
jdbc.initialPoolSize=50
jdbc.minPoolSize=20
jdbc.maxPoolSize=200

【web.xml[b]】[/b]其中主要是监听器和前端控制器的配置。

<!-- 监听器,在启动Web容器时,自动装配spring-mybatis.xml配置信息。 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-mybatis.xml</param-value>
</context-param>

<!-- 统一编码 -->
<filter>
<filter-name>charsetEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 前端控制器 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring.xml</param-value>
</init-param>

<!-- 加载/WEB-INF/[servlet-name]-servlet.xml -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.lj</url-pattern>
</servlet-mapping>


用的数据库是mysql,先建立一张用户表 t_user 表,字段很简单,建表语句如下:

CREATE TABLE t_user(
id INT (3) PRIMARY KEY NOT  NULL  AUTO_INCREMENT,
NAME VARCHAR(10) NOT  NULL ,
age INT(3) NOT  NULL ,
addr VARCHAR(100) NOT  NULL ,
timestamp_C TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

插入一条数据:



接下来就是 java 类的编写。

新建用户实体类,只有几个字段(id,姓名,年龄,地址)这个可以根据自己的需求来(实体类也可以不写spring 注解,当然写了更加规范一些)。

// id
private int id;
// 姓名
private String name;
// 年龄
private int age;
// 地址
private String addr;
// get、set方法省略


新建dao 接口(此处无需加springMVC的注解,亲测无误!)

public interface IuserDao {
// 添加
void save(User user);
// 修改
void update(User user);
// 删除
void delete(int id);
// 查找
User getUser(int id);

}


新建mapper 文件(有了该文件就相当于 dao的实现类 XXXdaoImpl了,无需再写写 dao 接口的实现类了)

<?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:必须与对应的接口全类名一致
id:必须与对应接口的某个对应的方法名一致   -->
<mapper namespace="com.dao.IuserDao">

<insert id="save" parameterType="com.model.User">
insert into t_user(name,age) values(#{name},#{age})
</insert>

<update id="update" parameterType="com.model.User">
update t_user set name=#{name},user_age=#{age} where id=#{id}
</update>

<delete id="delete" parameterType="int">
delete from t_user where id=#{id}
</delete>

<select id="getUser" parameterType="int" resultType="com.model.User">
select id,name,age,addr from t_user where id=#{id}
</select>

</mapper>


接下来是 service 层,用于调用 dao 层。

IUserService 接口(此处无需加spring的注解,亲测无误!这里特别说一下原因是搭建时参考了很多网上的资料,有很多都说需要在接口处添加注解,但是后来自己试了之后发现并不需要,故特此记录。)

public interface IUserService {

public User getUserById(int id);
}


IUserService 接口的实现类 UserServiceImpl

@Service("userService")
public class UserServiceImpl implements IUserService {
@Autowired
private IuserDao user;
// 此处的变量名可以随意命名,因为@Autowired 是按类型的。
public com.model.User getUserById(int id) {
return user.getUser(id);
}
}


编写 核心控制器 UserController 调用 service 层,为了简便,就只写了一个方法。
@Controller
public class UserController {

@Autowired
private IUserService userService;

@RequestMapping("/getUser")
public ModelAndView getUser(){

User user = userService.getUserById(1);
ModelAndView model = new ModelAndView();
model.addObject("user", user);
model.setViewName("loginSuccess");
return model;

}
}


接下来写 loginSuccess.jsp 页面,也就是 UserController.java 中getUser 方法要跳转的页面,也是怎么简单怎么来,接受响应的结果,打印姓名和年龄,如下:

<body>
<div align="center"><h1>登录成功</h1></div>
<h1 align="center">欢迎,${user.name},${user.age}!</h1>
</body>


至此,编码工作全部完成。接下来就是编译项目,无误之后部署到 tomcat 服务器上,这些步骤就省略了(懒!)

在浏览器输入请求地址(原谅我懒的写jsp页面了)http://localhost:8080/springMVC/getUser.lj

springMVC是项目名称,可自行在项目属性中更改,请求响应页面如下:



为了简单,因此没有加其他功能了,比如log4j 日志,只要框架流程通了,这些可以根据自己的需要在次基础上添加。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc mybatis spring