spring boot使用mysql

阅读: 评论:0

spring boot使用mysql

spring boot使用mysql

    使用数据库是开发基本应用的基础。借助于开发框架,我们已经不再编写原始的访问数据库的代码,也不用调用JDBC或者连接池等诸如此类的被称作为底层的代码了。spring boot包含了一个功能强大的资源库,为使用spring boot的开发者提供了更加简便的接口进行访问。

    一、使用MySQL:

        对于传统关系型数据库来说,spring boot使用JPA资源库来实现对数据库的操作,JPA就是为POJO提供持久化的标准规范,即将java的普通对象通过对象关系映射ORM持久化到数据库中。

    1、MySQL依赖配置:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

    2、实体建模:

        首先创建一些普通对象,用来与数据库的表建立映射关系,然后使用JPA对数据库进行增删改查等存取操作。        

@Entity
@Table(name = "user")
public class User implements java.io.Serializable{@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;
    private String name;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date createdate;

    public User() {}public Long getId() {return id;
    }public void setId(Long id) {this.id = id;
    }public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public Date getCreatedate() {return createdate;
    }public void setCreatedate(Date createdate) {atedate = createdate;
    }
}

    3、实体持久化

    以上已使用普通对象(POJO)与数据库建立映射关系(ORM),接下来使用JPA实现持久化。

    User实体使用JPA进行持久化如下所示。它是一个接口,并继承于JPA资源库JpaRepository接口,使用注解@Repository将这个接口也定义为一个资源库,使他能被其他程序引用,并为其他程序提供存取数据库的功能。

    

@Repository
public interface UserRepository extends JpaRepository<User, Long> {User findByNameLike(String name);
    User readByName(String name);
    List<User> getByCreatedateLessThan(Date star);
}
    这样就实现存取数据库的功能了,现在可以对数据库进行增删改查、分页查询、指定排序的字段等操作了。

    使用JPA不需要对接口有任何实现的代码,也不需要SQL语句。JpaRepository继承于PagingAndSortingRepository,提供了分页和排序功能,PagingAndSortingRepository继承于CrudRepository,提供了简单的增删改查功能。

    JPA还提供了一些自定义声明方法的规则,如,findBy、readBy,getBy作为方法名的前缀,拼接实体类中的属性字段,首字母大写,并可选拼接一些SQL查询关键字来组合成一个查询方法。如上面代码。

    4、测试验证:

    增加一个JPA配置类,其中@EnableTransactionManagement 启用了JPA的事务管理;@EnableJpaRepositories启用了JPA资源库并指定了上面定义的接口资源库的位置;@EntityScan指定了定义实体的位置,他将导入我们定义的实体。

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "dbdemo.**.repository")
@EntityScan(basePackages = "dbdemo.**.entity")
public class JpaConfiguration {@Bean
    PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){return new PersistenceExceptionTranslationPostProcessor();
    }}

    需要本地安装MySQL数据库,之后创建一个数据库,可以自定义命名为“shenchong”,配置密码123456。数据库的表结构不用创建,在程序运行的时候将会按照实体的定义自动创建。

    然后在l中添加配置,用来设置数据源和JPA的工作模式:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/shenchong?useSSL=falseusername: rootpassword: 123456jpa:
    database: MYSQL
    show-sql: true
  #Hibernate ddl auto (validate|create|create-drop|update)
    hibernate:
      ddl-auto: update
      naming-strategy: org.hibernate.cfg.ImprovedNamingStrategyproperties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5Dialect

    5、编写测试程序:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {JpaConfiguration.class})
public class MysqlTest {private static Logger logger = Logger(MysqlTest.class);

    @Autowired
    UserRepository userRepository;

    @Before
    public void initData(){userRepository.deleteAll();

        User user = new User();
        user.setName("user");
        user.setCreatedate(new Date());

        userRepository.save(user);
        Id());
    }@Test
    public void findPage(){Pageable pageable = new PageRequest(0, 10, new Sort(Sort.Direction.ASC, "id"));
        Page<User> page = userRepository.findAll(pageable);
        Null(page);
        for(User user : Content()) {logger.info("====user==== user name:{}",Name());
        }}


本文发布于:2024-02-05 00:40:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170720096861365.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:生活杂记
标签:spring   boot   mysql
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23