spring boot 与 轻量级dao的整合
摘要:快速搭建web项目,持久层用注解的方式使用原生sql
一:下载spring boot demo
google 到http://start.spring.io/下载spring boot 的demo
二:运行调试(返回json)
注意事项:(以idea为开发工具)
1.jdk版本demo里为1.8, 若本地为其他版本,需要改idea的java compiler (setting -- java compiler)
2.pom.xml java version改为所用jdk版本号
3.创建业务类(以User为例)如图所示:
4.代码
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/user")
@ResponseBody
public String getUser() {
return "hello world";
}
}
注:@Controller与@RestController 的区别
@RestController是在@Controller的基础上在方法return前加上@ResqonseBoby的注解,所以@RestController返回json格式,@Controller返回指定文件
5.启动应用
google --localhost:8080/user
正确输出helloworld
三:返回指定文件(默认配置)
1.指定图片或静态文件
resource文件夹下新建static(存放静态文件)路径为:src/main/resource/static如图:
google -- [localhost:8080/lightDao.png](localhost:8080/lightDao.png)
2.模板引擎 Thymeleaf
Thymeleaf为渲染html,xml的模板引擎,能够分离web前后端,不破坏html的内容,只需要定义标签属性即可,浏览器解析html时没有发现属性自动忽略,所以即可单独访问html文件也可以通过后台返回到模板文件
默认路径 src/main/resource/templates
此路径下新建模板文件index.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8"/>
<title></title>
</head>
<body>
<h1 th:text="${host}">hello world</h1>
</body>
</html>
pom.xml 引入引擎依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
UserController.java
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/index")
public String index(ModelMap modelMap) {
modelMap.addAttribute("host","www.baidu.com");
return "index";
}
}
重启应用 google --localhost:8080/index
正确输出 www.baidu.com
四.与dao持久层的交互(lightDao)
注:@littlersmall(作者)一个轻量级dao处理框架
不同在于pom依赖包
1.github down代码引入 如图:
2.pom依赖 :
3.业务类:
User.java
@Data
public class User {
private int id;
private String user_name;
}
UserContorller.java
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/user")
@ResponseBody
public String getUserById() {
return userService.getUserById(1).getUser_name();
}
}
UserService.java
@Service
public class UserService {
@Autowired
private UserDao userDao;
public User getUserById(int id) {
return userDao.getUserById(id);
}
}
UserDao.java
@Dao(dbName = "test")
public interface UserDao {
@Select("select * from user where id = {id}")
User getUserById(@SqlParam("id")int id);
}
4.application.properties :(spring boot 根据url可以找到class -name )
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
5.注入DataSource(lightdao约定)
第一种方式:bean注入
DemoApplication.java(启动应用程序)
@SpringBootApplication
@ComponentScan("com.example")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
System.out.println("--------启动成功---------");
}
@Bean(name = "TestDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public javax.sql.DataSource lightDaoDataSource() {
return DataSourceBuilder.create().build();
}
}
第二种注入方式:xml
resource文件夹下新建config.xml (请参考spring mvc配置文档)
config.xml
<bean id="TestDataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close" lazy-init="false">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
DemoApplication.java(启动应用程序)只需要加一个注解就ok了
@SpringBootApplication
@ComponentScan("com.example")
@ImportResource("classpath:config.xml")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
System.out.println("--------启动成功---------");
}
}
到此项目完成---w a n 完
注意事项 :
1.DemoApplication.java(启动应用程序) 默认package应于user业务类并列,否则扫描不到注解
若自定义package的话 加上注解@ComponentScan("com.example")
2.datasource bean name 应为 数据库名称+DataSource 否则找不到数据库 @littlersmall
3.jdbc依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
spring jdbc 自动获取对tomcat-jdbc的依赖
若引入spring mvc的jdbc依赖 会报异常
4.spring boot 对jsp有限制 参考spring boot jsp支持