Spring Boot注解与资源文件配置
date: 2018-11-18 16:57:17
updated: 2018-11-18 16:57:17
1.不需要多余的配置文件信息

application.properties
mybatis.type-aliases-package=com.mxxd.SCM.Dao
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/scm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password =
spring.freemarker.template-loader-path=classpath:/template/
spring.freemarker.suffix=.ftl
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
Dao层mapper 添加注解 @Repository
@Repository
public interface UserMapper {
//@Select("SELECT * FROM `users` where user_username = #{username} and user_password = #{password}")
public UserEntity login(String username, String password);
public UserEntity queryUser(String name);
public boolean insert(UserEntity user);
public boolean update(UserEntity user);
public boolean delete(int id);
}
mapper.xml文件 添加对应mapper文件的位置
<?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.mxxd.SCM.Dao.UserMapper" >
<resultMap id="userMap" type="com.mxxd.SCM.Entity.UserEntity" >
<id column="user_id" property="id" />
<result column="user_username" property="username" />
<result column="user_password" property="password" />
<result column="user_name" property="name" />
<result column="user_phone" property="phone" />
<result column="user_email" property="email" />
<result column="user_address" property="address" />
<result column="user_authority" property="authority" />
<result column="is_login" property="is_login" />
</resultMap>
<select id="login" parameterType="String" resultMap="userMap">
select *
from users where user_username = #{0} and user_password = #{1}
</select>
<select id="queryUser" resultMap="userMap">
select *
from users
where 1=1
<if test="id !=0">
and user_id = #{id}
</if>
<if test="username !=null and username !='' ">
and user_username = #{username}
</if>
<if test="password !=null and password !='' ">
and user_password = #{password}
</if>
<if test="name !=null and name !='' ">
and user_name like "%" #{name}"%"
</if>
</select>
<insert id="insert" parameterType="com.mxxd.SCM.Entity.UserEntity" >
INSERT INTO
users
(user_username,user_password,user_name,user_phone,user_email,user_address,user_authority,is_login)
VALUES
(#{username}, #{password}, #{name},#{phone},#{email},#{address},#{authority},#{is_login})
</insert>
<update id="update" parameterType="com.mxxd.SCM.Entity.UserEntity" >
UPDATE
users
SET
<if test="username != null and username != ''">user_username = #{username},</if>
<if test="password != null and password != ''">user_password = #{password},</if>
<if test="name != null and name != ''">user_name = #{name},</if>
<if test="phone != null and phone != ''">user_phone = #{phone},</if>
<if test="email != null and email != ''">user_email = #{email},</if>
<if test="address != null and address != ''">user_address = #{address},</if>
<if test="authority != null and authority != ''">user_authority = #{authority},</if>
WHERE
user_id = #{id}
</update>
<delete id="delete" parameterType="Integer" >
DELETE FROM
users
WHERE
user_id =#{0}
</delete>
</mapper>
Service层只需要一个service类即可 不需要一个接口一个实现类 添加注解
@Service
@Autowired 是指自动生成get和set方法
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public UserEntity login(String username, String password){
UserEntity user = userMapper.login(username,password);
return user;
}
}
启动类添加注解 @MapperScan("com.mxxd.SCM.Dao")自动扫描Dao层mapper
@SpringBootApplication
@MapperScan("com.mxxd.SCM.Dao")
public class ScmApplication {
public static void main(String[] args) {
SpringApplication.run(ScmApplication.class, args);
}
}
2.前端不推荐jsp,推荐thymeleaf或freemarker
使用freemarker
pom.xml文件添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
前端使用 .ftl 文件
在resources文件夹下创建两个目录:static 和 template
static:目录下创建css、js、img三个目录,存放静态资源文件
template:目录下存放 XX.ftl 文件
在com.mxxd.SCM目录下创建一个Conf目录,配置springboot的静态资源文件目录
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
@Bean
public HttpMessageConverter<String> responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(responseBodyConverter());
}
@Override
public void configureContentNegotiation(
ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
}
在 ftl 文件中如下引用

如果要引用其他页面,使用 <#include />
<#include "header.ftl" encoding="UTF-8"/>
3.启动项目必须启动XXXApplication启动类
不能进行单元测试!!! 因为需要等SpringBoot把所有的配置全部编译完成之后才能运行,不然会找不到BeanFactory
4.测试controller层调用service调用mapper连接数据库返回值是否正确
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/*
* 启动之后访问 /user/test 会自动跳转到index.ftl
* 如果直接访问index.ftl是无法访问成功的
* 因为ftl文件是一个模板文件,需要经过后台跳转才能进行渲染成网页
*/
@RequestMapping("/test")
public String home(){
return "index";
}
@RequestMapping("/home")
public ModelAndView login() {
UserEntity userEntity = userService.login("admin", "admin");
ModelAndView mv = new ModelAndView();
if (userEntity == null) {
mv.addObject("message", "用户名或密码错误,请重新输入!");
mv.setViewName("index");
} else {
mv.addObject("user", userEntity);
mv.setViewName("index");
}
System.out.println(userEntity);
System.out.println(mv.getModel());
System.out.println(mv.getViewName());
return mv;
}
}
直接在页面上进行测试,@Test 使用会报空指针错误
添加 @ResponseBody 注解不用返回页面,直接打印输出结果
前端直接使用 ${user.name} 获取user里name属性值 ${user}获取user整个对象值
Spring Boot注解与资源文件配置的更多相关文章
- 初识spring boot maven管理--属性文件配置
在使用springboot的时候可以使用属性文件配置对属性值进行动态配置,官方文档原文如下: Spring Boot uses a very particular PropertySource ord ...
- spring boot: EL和资源 (一般注入说明(二) @Service注解 @Component注解)
@Service用于标注业务层组件 : 将当前类注册为spring的Bean @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即 ...
- Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置
通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值: @PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@ ...
- 自定义的Spring Boot starter如何设置自动配置注解
本文首发于个人网站: 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触 ...
- Spring boot 默认静态资源路径与手动配置访问路径的方法
这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在application.propertis中配置 ##端口号 ...
- spring boot 开静态资源访问,配置视图解析器
配置视图解析器spring.mvc.view.prefix=/pages/spring.mvc.view.suffiix= spring boot 开静态资源访问application.proerti ...
- Spring boot运行原理-自定义自动配置类
在前面SpringBoot的文章中介绍了SpringBoot的基本配置,今天我们将给大家讲一讲SpringBoot的运行原理,然后根据原理我们自定义一个starter pom. 本章对于后续继续学习S ...
- Spring boot集成Swagger2,并配置多个扫描路径,添加swagger-ui-layer
Spring boot集成Swagger,并配置多个扫描路径 1:认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目 ...
- Spring boot集成Swagger,并配置多个扫描路径
Spring boot集成Swagger,并配置多个扫描路径 1:认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目 ...
随机推荐
- java identityHashCode 和 hashCode
当类并没有重写Object#hashCode()时, 对于 System.identityHashCode(Object) 和 Object#hashCode() 的结果是一致的; 但对于类似Stri ...
- ftp客户端自动同步 Windows系统简单操作ftp客户端自动同步
服务器管理工具它是一款功能强大的服务器集成管理器,包含win系统和linux系统的批量连接,vnc客户端,ftp客户端等等实用功能.我们可以使用这款软件的ftp客户端定时上传下载的功能来进实现ftp客 ...
- MVC设计模式-笔记1
MVC不仅仅是一个设计模式,它应该说是一种软件开发架构模式,它包含了很多的设计模式,最为密切是以下三种模式: 1.Observer观察者模式 2.Composite组合模式 3.Strategy策略模 ...
- RabbitMQ小记(四)
1.RabbitMQ管理 (1)权限管理 物理服务器和虚拟主机都各自有独立的权限管理,用户访问需要设置权限. 授权命令:rabbitmqctl set permissions [-p vhost] { ...
- Python-列表 元组-list tuple
列表 list [vale,...] 可加入任意类型数据,并可嵌套,不定长 student = ["beimenchuixue", "maYun", " ...
- Boost 信号与槽,获取槽函数返回值,使用占位参数传递信号携带的参数
test1: 展示了, 1 信号与槽的基本使用, 2 要获取槽函数的返回值时的注意事项 #if 1 /* 参考blog https://www.cnblogs.com/jiayayao/p/62 ...
- CF600E Lomsat gelral 树上启发式合并
题目描述 有一棵 \(n\) 个结点的以 \(1\) 号结点为根的有根树. 每个结点都有一个颜色,颜色是以编号表示的, \(i\) 号结点的颜色编号为 \(c_i\). 如果一种颜色在以 \(x\) ...
- spring-boot-route(七)整合jdbcTemplate操作数据库
在一部分内容中,我们学习了Restful接口的编写,及接口文档的生成.我们需要将接口数据进行持久化存储,这一部分我们主要学习几种持久化框架将数据进行存储.本部分内容中,我们都将使用mysql为例来做为 ...
- ATMEGA的SPI总线 - 第2部分
参考: 1.https://www.yiboard.com/thread-783-1-1.html 2.https://mansfield-devine.com/speculatrix/2018/01 ...
- SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期
写在前面 通过前几篇文章的学习,我们从大体上了解了shiro关于认证和授权方面的应用.在接下来的文章当中,我将通过一个demo,带领大家搭建一个SpringBoot整合Shiro的一个项目开发脚手架, ...