注意:本文章直接教学在IDEA中用springBoot构建SSM项目,具体springBoot相关原理下一篇文章讲述,该文章注重使用。
虽然本文注重springBoot的使用,但是我还是要说一下,前面我们已经学了ssm框架,也学了用maven管理项目,为什么还要学springBoot?在使用ssm的时候,我们还记得需要很多配置文件,比如spring.xml,spring.xml,applicaton.xml等,说实话这么多配置文件不是我们想看见的,所以springBoot就来了,它简化了很多的配置文件,依赖。其中最重要的就是自动配置,他为大量的开发环境都配备了自动配置,只用按照springBoot的规则来配置,就可以完成对应的环境配置。比如:要使用mybatis,需要配置数据源,springBoot已经有了自动配置数据源的能力,你只需要根据他的要求来定义一些数据源的内容就可以(其实听起来好像也没有简化)。
在IDEA中创建一个maven项目,不选择骨架。
maven项目中的pom文件,在pom文件中继承springboot的资源
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
然后,就可以使用spring和springMVC了,和之前比起来,确实少了很多配置文件。
springBoot构架的项目,都需要通过该启动类作为入口启动。
这里有两个注解@SpringBootApplication,@MapperScan(“cn.tedu.mapper”),这里暂时不做解释,下一篇文章会详细解释,现在只需要记住,这里是包扫描和扫描接口类,所以该项目启动类要放在需要扫描的包同级或上级。
@SpringBootApplication
@MapperScan("cn.tedu.mapper")
public class StarterOU {
public static void main(String[] args) {
SpringApplication.run(StarterOU.class,args);
}
}
上面写了启动类,那么肯定会有疑问,我们的项目不是一个web项目吗?为什么会使用main方法来启动?不是应该打成war包放到tomcat上吗?这是因为springBoot内嵌了web容器,所以就可以通过启动类来使用tomcat。
web配置的依赖也是在pom文件来声明:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我们需要在pom中配置这些依赖:
spring-boot-starter-jdbc:jdbc依赖,让项目能使用jdbc
mysql-connector-java:msyql依赖,让项目能支持mysql
mybatis-spring-boot-starter:mybatis整合,让项目支持mybatis框架
druid:德鲁伊连接池
<!--starter-jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
这里需要说明一下,resource文件中放的是额外文件:
持久层的配置还没有结束,接下来我们需要配置数据源的相关信息,以及mappers中的映射文件位置配置,配置位置就是application.properties:
server.port=8092
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.url=jdbc:mysql:///microtest
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.password=root
mybatis.mapper-locations=classpath:mappers/*.xml
mybatis.configuration.cache-enabled=false
mybatis.configuration.map-underscore-to-camel-case=true
然后再写mappers中的映射文件:
<mapper namespace="cn.tedu.mapper.UserMapper">
<select id="selectUserByUserid" parameterType="String" resultType="cn.tedu.domain.User">
select *from t_user where user_id=#{userId}
</select>
<update id="updateUserPointsById">
update t_user set points=points+#{point}
where user_id=1;
</update>
</mapper>
<mapper namespace="cn.tedu.mapper.OrderMapper">
<!--根据id查询订单功能-->
<select id="selectOrderById" resultType="cn.tedu.domain.Order">
select * from t_order where order_id=#{orderId};
</select>
</mapper>
写mapper文件中的接口:
public interface OrderMapper {
Order selectOrderById(String orderId);
}
public interface UserMapper {
User selectUserByUserid(String userId);
void updateUserPointsById(int points);
}
到此为止,持久化层完成。
(下面的两层之前已经写过很多遍了,这里就不做过多解释)
该接口会在controller层使用
public interface UserService {
User queryUserPoint(String userId);
}
调用mapper文件中的接口方法->映射文件中的sql
@Service
public class UserServiceImp implements UserService {
@Autowired
private UserMapper UserMapper;
@Override
public User queryUserPoint(String userId) {
return UserMapper.selectUserByUserid(userId);
}
}
@Controller
public class UserController {
@Autowired
private UserService UserService;
@RequestMapping(value = "/user/query/point",method = RequestMethod.GET)
@ResponseBody
public User queryUserPoint(String userId){
return UserService.queryUserPoint(userId);
}
}
直接在启动类中启动,然后去浏览器输入地址:
如下控制台,则表示启动成功。
之前在application.properties中配置了端口信息,所以不是8080,这里需要注意,这样就可以发现,我们没有打war包,没有使用外部tomcat,而是使用springBoot内部的tomcat。