文章目录
SSM框架——Spring + SpringMVC + MyBatis整合测试案例
1、MVC概念
可以简单理解为控制器C和视图V之间的实体类M的交互;而controller表示层、services业务逻辑层、dao数据操纵层,称作java的三层结构,实体类不属于任何一层
2、创建maven工程
选maven-archetype-webapp
3、依赖包导入
Spring导包较多,要注意统一版本
- mysql-connector-java
- mybatis、mybatis-spring
- spring-core、spring-context、spring-beans(BeanFactory,不用new)、spring-webmvc、spring-tx(事务相关)、spring-jdbc
- jackson-core、jackson-databind、jackson-annotations(注释)
- commons-dbcp
4、目录结构
main下面新建java目录作为source root,在里面建三层结构和实体类;新建resources资源包,在里面创建spring.xml文件。结构如下
5、spring.xml配置
5.1、修改spring.xml头部信息
-
xmlns为初始化bean的格式文件地址,复制三份出来:分别添加context、tx、mvc,前面增加,后面替换beans内容,样式如下:
-
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"
-
xmlns:xsi:辅助初始化bean,此处不用管
-
xsi:context:关于spring上下文,包括加载资源文件(本例无)
-
xsi:schemaLocation:用于声明了目标名称空间的模式文档,复制三份出来,每份替换beans为context、tx、mvc各三处,注意复制的内容均要在双引号内
-
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
5.2、spring.xml内容配置
5.2.1、开启自动扫描,指定到要扫的包的上一层(一直至少三层),即可自动扫描java工程里的类
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.kgc.myweb01"></context:component-scan>
5.2.2、开启数据库链接
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://singlelinux:3306/mydemo"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
5.2.3、开启自动事务
配置ref="dataSource"引用上面的配置
上面为事务管理器,下面的为开启事务,使用注释语法自动开启
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
5.2.4、开启spring和mybatis整合
新建一个mapper配置文件,头部如果记不住的话,可以在IDEA里设置快捷键settings,editor,live templates,add group,底面change指定应用地方,define
,后面只要输入快捷键即可
classpath代表当前资源文件夹里的xml全都扫描到
MapperScannerConfigurer:扫描器,mybatis里自动把接口当做类用,不过只能new DAO接口,其他不可以
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath*:mapper/*.xml"></property>
</bean>
<bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.kgc.myweb01.dao"></property>
</bean>
4.2.5、开启将用户的实体数据转为json格式的功能
<mvc:annotation-driven></mvc:annotation-driven>
5.2.6、配置总结
通篇文件配置,仅以下三处需要修改,其他均为常规套路模板
java工程扫描包:base-package=""
数据库config的四个基本配置:BasicDataSource
resource扫描dao接口:value=""
6、进入webapp,修改其中的web.xml
6.1、将spring.xml设置为全局变量
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
6.2、设置中文编码
filter:设置字符集编码过滤器
filter-mapping:设置任何请求均使用此过滤器
<filter>
<filter-name>charset</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>
</filter>
<filter-mapping>
<filter-name>charset</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
6.3、设置和启动Spring的核心监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
6.4、启动spring的MVC
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
</servlet>
6.5、设置控制器的Java类后缀名
但凡链接地址调什么.do,就会自动去找控制器底下的.do方法
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
6.6、总结:web.xml也基本上是个写死的文件,除了spring.xml
7、java工程
7.1、dao
public interface UserinfosDAO {
List<Userinfos> findAll();
}
7.2、entity
public class Userinfos {
private int userid;
private String username;
private Date birthday;
...(因不需要new,因此不需要构造器,仅getter和setter即可)
}
7.3、services
此处用到注解有:Service、Transactional、Autowired
@Service //自动实例化接口对象
@Transactional //开启自动事务,自动commit了,无需再手动
public class UsersService {
//services层直接调用dao层的方法,因为上面已经使用注解@Service new了dao的对象,此处只需要使用@Autowired调出来即可
@Autowired
private UserinfosDAO udao;
public List<Userinfos> searchAll(){
return udao.findAll();
}
}
7.4、controller
//@Controller //实例化对象,暴露接口
@RestController //暴露接口,一般传出去为json数据
public class InitCtrl {
//呼叫services层
@Autowired //自动装配
private UsersService usersService;
//怎么找到这个方法,因为比如说网页,是找不到java类的,因此需要java类主动去暴露
@RequestMapping("/users.do") //在网页地址栏上写个XXX.do,就会调用这个方法
public List<Userinfos> init(){
return usersService.searchAll();
}
}
7.6、写sql语句
mybatis里的操作了
创建resources.mapper.userinfos.xml文件,重写findAll方法
<?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.kgc.myweb01.dao.UserinfosDAO">
<select id="findAll" resultType="com.kgc.myweb01.entity.Userinfos">
select * from userinfos
</select>
</mapper>
8、配置运行环境并运行
以上内容都配置完之后,我们发现还缺一个main方法执行,此处我们不用main方法,把工程编译好之后放在Tomcat中运行
8.1、Tomcat 8.5.64下载完之后,解压安装到windows上
8.2、点击Add Configuration,添加Tomcat Server,此处我们选本地Local模式
8.3、修改Name,编辑Configuration路径为Tomcat的根目录
8.4、部署项目到Tomcat
8.5、返回Server界面,修改手动触发更新操作和当idea失去焦点时,idea的默认操作为为更新java类,jsp和静态资源文件
8.6、修改URL子页面地址为自己想要的地址
8.7、点击执行,即可看到网页自动弹出,此时未调用配置里的user.do方法
8.8、调用users.do即可
至此,spring暴露数据库接口的案例测试完毕,恭喜!