使用IDEA和STS均可新建一个SpringBoot项目
导入mysql驱动包和MMyBatis-Spring-Boot-Starter
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.3.2version>
dependency>
CREATE TABLE user(
id INTEGER PRIMARY KEY,
name varchar(20),
score INTEGER
)
public class User {
private Integer id;
private String name;
private Integer score;
//getters/setters
}
public interface UserMapper {
void insertUser(User user);
List<User> getUsers();
}
userMapper.xml
<mapper namespace="com.sanfeng.springbootmybatisjpa.mapper.UserMapper">
<insert id="insertUser" parameterType="com.sanfeng.springbootmybatisjpa.beans.User">
insert into user values(#{id}, #{name}, #{score})
insert>
<select id="getUsers" resultType="com.sanfeng.springbootmybatisjpa.beans.User">
select * from user
select>
mapper>
# 配置数据源
# 配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
# 指定mapper文件的位置
mybatis:
mapper-locations: classpath:mapper/*.xml # mapper文件的位置
# config-location: classpath:mybatis-config.xml # mybatis核心配置文件的位置
在启动类中添加对mapper包扫描@MapperScan
@SpringBootApplication
@MapperScan("com.sanfeng.springbootmybatisjpa.mapper")
public class SpringbootMybatisJpaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisJpaApplication.class, args);
}
}
或者直接在Mapper类上面添加注解@Mapper
,建议使用上面那种,不然每个mapper加个注解也挺麻烦的
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisJpaApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void contextLoads() {
userMapper.insertUser(new User(3, "ab", 100));
userMapper.insertUser(new User(4, "cd", 100));
System.out.println(userMapper.getUsers());
}
}
首先了解JPA是什么?
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。
JPA 所维护的核心是实体( Entity Bean ),而它是通过一个持久化上下文( Persistence Context )来使用的 。持久化上下文包含 以下 3 个部分 :
• 对象关系映射( Obj ect Relational Mapping,简称 ORM , 或 0反M,或 O/R 映射 )描述, JPA
支持注解或 XML 两种形式的描述,在 Spring Boot 中主要通过注解实现 :
• 实体操作 API ,通过这节规范可以实现对实体对象的 CRUD 操作,来完成对象的持久化和
查询:
• 查询语言,约定了面向对象的查询语言 JPQL CJava Persistence Query Language ),通过这层
关系可 以实现 比较灵活的查询 。
注意:JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以叫他们为JPA的实现产品。
spring data jpa
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!
CREATE TABLE student(
id INTEGER PRIMARY KEY,
last_name varchar(20),
email varchar(20)
)
@Entity // 告诉jpa,这是一个实体类(和数据表映射的类)
@Table(name = "student") // 指定和那个数据表对应,如果省略默认表名为student
public class Student {
@Id //这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
private Integer id;
@Column(name = "last_name", length = 50) //这是和数据表对应的一个列
private String lastName;
@Column //省略默认列名就是属性名
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public interface UserRepository extends JpaRepository<User, Integer> {
}
@Autowired
private UserRepository userRepository;
@Test
public void testRepository() {
Student s = userRepository.save(new Student("name1", "[email protected]"));
System.out.println(s);
userRepository.save(new Student("name2", "[email protected]"));
System.out.println(userRepository.findById(1).get());
}