一些准备的东西:单元测试
首先需要整合junit单元测试,方便后续的操作。
1、添加依赖:
org.springframework.boot
spring-boot-starter-test
1.5.14.RELEASE
2、在测试类上添加注解:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringcloudProviderApplication.class)
public class Demo {
}
OK,我们就可以试使用@Test注解待会来进行各种测试操作了。
一、整合jpa
此jpa其实就是基于hibernate的实现,有使用过hibernate的注解的,springboot 的jpa都是一样一样的
1、添加依赖
org.springframework.boot
spring-boot-starter-data-jpa
2、在application.properties中进行配置:
#数据源的配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=mysqladmin
#hibernate的可选配置
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
hibernate的配置跟原生hibernate的选项一样一样的。
3、创建一个实体类,添加jpa注解
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private Date birthday;
//getter setter方法
}
还有一些其他的注解,如@Table,@column,自己指定表名、列名的注解可参考hibernate jpa注解。
使用JPA注解的一大好处就是自动映射 实体类---表,它可以为我们自动对属性进行映射。不需要繁琐的配置文件进行配置
4、使用repository或者template
4.1、使用CrudRepository
springboot 一个最大的特点就是简单方便,默认有一个CrudRepository类,可以为我们进行各种增删改查操作。
创建一个接口继承该CrudRepository接口。添加@Repository注解,指定泛型为<实体类,主键类型>。你没看错,什么方法都可以不用写!
@Repository
public interface UserRepository extends CrudRepository{
}
进行测试,添加一个User。
@Resource
private UserRepository userRepository;
@Test
public void test01(){
User user = new User();
user.setName("wangwu");
user.setBirthday(new Date());
userRepository.save(user);
}
走你!你会发现,如果你没有创建user这个表,会自动为你创建这个表,数据保存成功!
4.1、使用jdbcTemplate
springboot还提供另一种原生jdbc操作。不用再创建任何类,直接注入JdbcTemplate,如下:
@Resource
private JdbcTemplate jdbcTemplate;
@Test
public void test03(){
String sql = "select * from user ";
BeanPropertyRowMapper userBeanPropertyRowMapper = new BeanPropertyRowMapper<>(User.class);
List users = jdbcTemplate.query(sql, userBeanPropertyRowMapper);
System.out.println(users);
}
即就是自己指定sql语句,创建BeanPropertyRowMapper对象,构造参数为实体类的Class对象。就是这么easy.
二、整合mybaits
同样需要一个实体类,类上不需要任何注解,比如,创建一个实体类叫做:Comment。
public class Comment {
private int id ;
private String text;
private Date ctTime;
public Comment() {
}
public Comment(String text, Date ctTime) {
this.text = text;
this.ctTime = ctTime;
}
//getter setter
}
1、添加springboot-mybatis依赖,
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
2、在application.properties中进行配置:
mybatis.type-aliases-package=li.wei.springboot
#数据源的配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=mysqladmin
3、创建一个mapper接口,@Mapper注解表示这是一个mapper,也可以再启动类中添加注解:@MapperScan("li.wei.dao")来扫描该包下面所有的mapper。
再注解中@Insert 或者@Select或者其他,即输入的sql语句。此外,@Results注解中选择@Result注解,即属性-->表字段的映射,此外,不指定,默认表字段与类属性相同。
@Mapper
public interface CommentMapper {
@Insert("insert into comment(id,text,ct_time) values(#{id},#{text},#{ctTime})")
void save(Comment comment);
@Select("select text,ct_time from comment")
@Results({
@Result(property = "ctTime",column = "ct_time")
})
List<Comment> findAll();
}
4、测试方法。mybatis不支持自动创建表,需要先创建好表之后才能测试。
@Resource
CommentMapper commentMapper;
@Test
public void test05(){
Comment comment = new Comment("hahah", new Date());
commentMapper.save(comment);
//List all = commentMapper.findAll();
}
整合mybaits成功!
发表评论