上一篇文章我已经介绍了如何实现spring bootmvc框架,现在引入hibernate
首先先说一下,spring boot已经融合了hibernate,所以不需要你在导入什么jar文件。
这里只需要在加入一个jar,springboot数据处理的jar文件
<!-- spring boot数据处理 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
当然,还有最基本的数据库链接jar文件
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
好了
接着我们添加相关数据库配置,在原有的application.properties文件中加入
spring.datasource.url =jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName =com.mysql.jdbc.Driver
#指定连接池中最大的活跃连接数.
spring.datasource.max-active=20
#指定连接池最大的空闲连接数量.
spring.datasource.max-idle=8
#指定必须保持连接的最小值
spring.datasource.min-idle=8
#指定启动连接池时,初始建立的连接数量
spring.datasource.initial-size=10
#指定目标数据库.
spring.jpa.database = MYSQL
#是否开启sql的log,默认为: false
spring.jpa.show-sql = true
#hibernate打印sql
hiernate.show_sql=true
#
spring.jpa.properties.hibernate.hbm2ddl.auto=update
这些配置什么意思,看一下这篇文章吧,我觉得看完了,你会学的更多,所以这里不做解释
https://segmentfault.com/a/1190000004316491
接着创建dao接口
package com.mx.dao;
import java.util.List;
import com.mx.model.User;
public interface UserDao{
List<User> getList();
}
然后是实现,这里我还是hibernate熟悉的一些方式,亲切些吧。
使用 @Repository 将 DAO 类声明为 Bean
package com.mx.dao.impl;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import com.mx.dao.UserDao;
import com.mx.model.User;
@Repository
public class UserDaoImpl implements UserDao {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<User> getList() {
// TODO Auto-generated method stub
Query query=entityManager.createQuery("from User");
return query.getResultList();
}
}
接着创建service
package com.mx.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mx.dao.UserDao;
import com.mx.model.User;
@Service("userService")
public class UserService {
@Autowired
private UserDao userDao;
public List<User> getList(){
List<User> list=userDao.getList();
return list;
}
}
这里如果用service接口的话,出出现无法注入bean,具体原因,我暂时不清楚,后续研究后再改,如果有人明白欢迎下面评论。
这里给大家介绍一个文章
http://blog.youkuaiyun.com/ye1992/article/details/19971467
好了,下面我先用junit测试:
这里我要加入一个jar,阿里的json工具,格式化数据,看起来方便写
<!-- json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.37</version>
</dependency>
package mx1;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.alibaba.fastjson.JSON;
import com.mx.StartMvc;
import com.mx.model.User;
import com.mx.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes=StartMvc.class)
public class JunitTest1 {
@Autowired
UserService userService;
@Test
public void test1(){
List<User> list=userService.getList();
String json=JSON.toJSONString(list);
System.out.println(json);
}
}
运行测试一下
然后实现controller
package com.mx.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.mx.model.User;
import com.mx.service.UserService;
@Controller
public class IndexController {
@Autowired
UserService userService;
@RequestMapping("/index1")
public String index(){
List<User> list=userService.getList();
System.out.println(list);
return "index";
}
@RequestMapping("/test3")
public String test3(){
return "eee";
}
}
这里有一个非常重要的问题
记住spring boot启动类一定要放在所有包前面
就是StartMvc.java放在其他文件上级目录。比如,一般是com.mx.controller 那么StartMvc.java就放在com.mx包下面。要不然,到时候找不到其他bean,无法注入
好了,自己测试吧
有问题,下面评论