通常一段程序的运行自然少不了同数据库,页面打交道了,今天主要介绍springboot 和mybatis、freemarker整合步骤及遇到的一些坑。
一、springboot整合mabatis
利用mybatis技术来访问数据库,实现数据的CRUD
1.添加依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version></dependency>
2.添加数据配置
在项目根目录新增application.properties,添加如下内容+
server.port=8011
#jdbc
spring.datasource.url=jdbc:mysql://192.168.64.132:3306/test
spring.datasource.username=root
spring.datasource.password=Pass1234
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.validation-query=SELECT 1
spring.datasource.test-on-borrow=false
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=18800
spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)
2.1 指定了tomcat访问端口8011
2.2 配置数据库连接信息,数据库连接池信息
3.编写modelpublic class User {
private Integer id;
private String userName;
private String password;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
###注意:数据库字段命名也要保持驼峰式命名法则
4.编写Mapper
@Mapper
public interface UserMapper {
@Select("select * from user where userName = #{name}")
User findUserByName(@Param("name")String name);
}
5.编写测试类
@RestController
public class TestController {
@Autowired
UserMapper userMapper;
@RequestMapping(value="/hello",method = RequestMethod.GET)
public String hello(){
User user = userMapper.findUserByName("王伟");
return user.getUserName()+"-----"+user.getAge();
}
}6.在浏览器输入http://127.0.0.1:8011/hello,从数据库查询到王伟的个人信息
王伟-----24
注意:@RestController 的使用,支持Rest访问,然仅仅使用@Controller是无法访问的。
@RestController等价于@Controller和@RequestBody
二、springboot 整合freemarker
想要做页面展示,需要结合模板技术来实现
1.添加依赖
<dependency>2.添加freemarker 配置
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
在application.properties,添加如下内容
# FREEMARKER (FreeMarkerAutoConfiguration)3.编写ftl 文件
spring.freemarker.allow-request-override=false
spring.freemarker.allow-session-override=false
spring.freemarker.cache=true
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.enabled=true
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=true
spring.freemarker.prefer-file-system-access=true
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.settings.template_update_delay=0
spring.freemarker.settings.default_encoding=UTF-8
spring.freemarker.settings.classic_compatible=true
spring.freemarker.order=1
在resources下新建文件夹templates,在templates下新建test.ftl
<!DOCTYPE html>4.编写测试类
<html lang="en">
<body>
Date: ${time?date}
<br>
Time: ${time?time}
<br>
Message: ${message}
</body>
</html>
@Controller
public class TestController {
@Autowired
UserMapper userMapper;
@RequestMapping("/test")
public String testWeb(Map<String,Object> model){
model.put("time",new Date());
User user = userMapper.findUserByName("王伟");
model.put("message",user.getUserName());
return "test"; //返回 templates文件夹下ftl文件名称
}
}5. 运行启动类 在浏览器输入http://127.0.0.1:8011/test,
注意到:测试类使用了@Controller
原因是:
1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
例如:本来应该到success.jsp页面的,则其显示success.
2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
三、配置静态资源文件
.spring boot默认加载文件的路径是
/META-INF/resources/
/resources/
/static/
/public/
在resources下新建css,js,image文件夹 用于存放静态文件
如