spring jpa 连接数据库

最开始我们需要导入相关的依赖:

<dependency>
        <groupId>org.springframework.boot</groupId
        <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
</dependency>
  • 配置数据源

在springboot,我们数据源的配置只需要写在application.properties文件中,springboot会自动找到该文件,并进行配置。其内容如下:

spring.datasource.url=jdbc:mysql://localhost:3306/sys
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.hbm2ddl.auto=create
  • 编写实体类 
    我们给实体类加上@Entity加上注解后,实体类User会将首字母变为小写和数据库中的user表相对应。
@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable=false)
    private String name;

    @Column(nullable=false)
    private Integer age;

    public User(){}

    public User(String name, Integer age){
        this.name = name;
        this.age = age;
    }
    省略get/set方法。。。
}
  • 编写Repository 
    我们写一个自己的接口UserRepository来继承JpaRepository接口,规范的接口方法会自动被解析为正确的查询语句。在SpringData中的Repository中为我们提供了实现类,因此我们这里只需要定义接口就行了。
@Repository
public interface UserRepository extends JpaRepository<User, Long>{

    User findByName(String name);
    User findByNameAndAge(String name, Integer age);

    @Query("from User u where u.name=:name")
    User findUser(@Param("name") String name);
}
  • 编写JavaConfig配置类 
    到目前为止,这类Bean都只是被定义了,相当于他们还是散落在容器外的沙石,我们需要这些沙石来建造房屋。那么我们需要JavaConifg来对其进行配置,这样这些沙石才能被spring容器所管理,变成真正有用的材料。
@Configuration
@ComponentScan
@EnableJpaRepositories
public class ApplicationConfig {


}

我们可以看到这里配置的类中什么都没有,这是因为我们在通过注解的方式来自动配置这些类。@Component注解会扫描当前类所在的包,及其子包找到那些有@Controller、@Service、@Repository等注解的类,并把他们注册到spring容器中。但是要注意这里我们必须要加上@EnableJpaRepositories,这个是比较特殊的因为用它注解的是一个接口,即我们的UserRepository 接口,通过@Component是不能达到注册这个Repository目的的。

  • 编写测试类
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(ApplicationConfig.class)
public class ApplicationTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test() throws Exception {

        // 创建10条记录
        userRepository.save(new User("AAA", 10));
        userRepository.save(new User("BBB", 20));
        userRepository.save(new User("CCC", 30));
        userRepository.save(new User("DDD", 40));
        userRepository.save(new User("EEE", 50));
        userRepository.save(new User("FFF", 60));
        userRepository.save(new User("GGG", 70));
        userRepository.save(new User("HHH", 80));
        userRepository.save(new User("III", 90));
        userRepository.save(new User("JJJ", 100));

        // 测试findAll, 查询所有记录
        Assert.assertEquals(10, userRepository.findAll().size());

        // 测试findByName, 查询姓名为FFF的User
        Assert.assertEquals(60, userRepository.findByName("FFF").getAge().longValue());

        // 测试findUser, 查询姓名为FFF的User
        Assert.assertEquals(60, userRepository.findUser("FFF").getAge().longValue());

        // 测试findByNameAndAge, 查询姓名为FFF并且年龄为60的User
        Assert.assertEquals("FFF", userRepository.findByNameAndAge("FFF", 60).getName());

        // 测试删除姓名为AAA的User    userRepository.delete(userRepository.findByName("AAA"));

        // 测试findAll, 查询所有记录, 验证上面的删除是否成功
        Assert.assertEquals(9, userRepository.findAll().size());
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值