最近新项目要抛弃以前的SSH框架结构,采用最新的RESTful框架结构去实现。
做到前后端分离。数据库方面准备采用Mybatis框架去操作。
RESTful web Service的搭建参考官方文档:http://spring.io/guides/gs/rest-service/
RESTful设计风格通俗来讲 就是,合理使用HTTP协议(POST,GET,PUT,DELETE)来请求服务。服务将对应的信息以JSON格式返回前台,而不再需要提交请求给服务器,服务器处理请求,转发给页面。这个设计风格直接将服务器上的每个模块抽象成一个个资源。而前端页面做的 就是访问资源,获取资源信息,展示即可。
接下来展示SpringBoot+Spring+mybatis的配置
其中采用Maven管理Jar包 其中的pom.xml如下:
<properties>
<java.version>1.6</java.version>
<mysql-connector-java.version>5.1.36</mysql-connector-java.version>
<!-- 依赖版本 -->
<mybatis.version>3.3.1</mybatis.version>
<mybatis.spring.version>1.2.4</mybatis.spring.version>
<mapper.version>3.3.6</mapper.version>
<pagehelper.version>4.1.1</pagehelper.version>
</properties>
<dependencies>
<!-- SpringBoot 的依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
<!--Mybatis依赖包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis会和Spring集成 所以这个包很关键 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!-- Mybatis Generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!--通用Mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
在JAR包下载好之后,配置applicationContext.xml文件。这个文件是Spring的核心文件。我们将在这个文件里配置MyBatis的数据库配置,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:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="ContextTest" class="SSI.applicationContextTest" init-method="testmethod"></bean>
<bean id="application" class="SSI.Application"></bean>
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源和Mybatis的Mapping文件 -->
<property name="dataSource" ref="datasource"></property>
<property name="mapperLocations" value="classpath:user-mybatis.xml"></property>
</bean>
<!-- 数据源 -->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="*"></property>
<property name="driverClassName" value="*"></property>
<property name="username" value="*"></property>
<property name="password" value="*"></property>
</bean>
<bean id="userServices" class="Dao.UserServices"></bean>
<bean id="greetingController" class="SSI.GreetingController">
<property name="sqlsessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
注:这里的sessionFactory 关联的类是 org.mybatis.spring.SqlSessionFactoryBean 这个是mybaits的会话工厂。其中的两个参数dataSource:配置数据源,mapperLocations:配置Mybatis的Mapping文件。
这个只是配置了applicationContext.xml 如何告诉SpringBoot启动的时候加载这个文件呢。如下:
import org.apache.catalina.LifecycleException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) throws LifecycleException {
//通过注解加载Bean
// SpringApplication.run(Application.class, args);
//从Spring配置文件加载Bean
SpringApplication.run("classpath:applicationContext.xml", args);
// SpringApplication app=new SpringApplication(Application.class);
// app.run(args);
}
}
这样 在SpringBoot启动的时候 就会去加载applicationContext.xml文件。这样Spring,SpringBoot,Mybatis就关联起来了。SpringBoot是通过注解去发现Bean 详情参考文档开头Spring的官方文档
Mybatis的使用,在Dao层 有三种方案。
- 继承org.mybatis.spring.SqlSessionTemplate
- 继承org.mybatis.spring.support.SqlSessionDaoSupport
- 继承org.mybatis.spring.SqlSessionFactoryBean
分别调用对应的方法去执行SQL 同Mybatis使用。上述三种继承方案有不同的处理方法,
第一种方法,继承SqlSessionTemplate后 由于这个类重载了三个带参构造器,继承之后 需要实现他的一个构造器。将SessionFactory赋值进去。然后通过sessionFactory来获取sqlSession
第二种方法,继承SqlSessionDaoSupport 后 可以发现 只提供了sqlSession变量可以使用。但是sqlSession来自sqlSessionFactory 所以 可以必须在这里调用setSqlSessionFactory方法。否则你拿到的sqlsession是一个NULL
第三种方法:继承SqlSessionFactoryBean 之后 查看buildSqlSessionFactory 方法 如下:
如源代码所示,你得先配置他的configuration.这个是你配置Mybatis的配置文件。这个类功能相当于读取配置文件,重新创建sqlSessionfactory。如下:
public class MybatisTest {
public static void main(String[] args) throws IOException {
Reader reader=Resources.getResourceAsReader("Mybatis.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlsession=sessionFactory.openSession();
// user list=sqlsession.selectOne("SSI.user.selectUser", "902889");
List<user> list=sqlsession.selectList("selectAll");
System.out.println(list);
}
}
以上,右键application。整个项目启动。
效果如下
至此整个项目就搭建好了。