1、整合spring-data-jpa
pom.xml文件依赖
<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>
配置文件application.properties配置数据源
### 数据源信息配置
# 数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/jdbctemplate?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useUnicode=true&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
# 用户名配置
spring.datasource.username=root
# 密码
spring.datasource.password=123456
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### JPA持久化配置
# 指定数据库的类型
spring.jpa.database=MySQL
# 指定是否需要在日志中显示SQL语句
spring.jpa.show-sql=true
# 指定自动创建|更新|验证数据库表结构等配置,配置成update
# 表示如果数据库中存在持久化类对应的表就不创建,不存在就创建对应的表
spring.jpa.hibernate.ddl-auto=update
# 指定命名策略
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
# 指定数据库方言
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;
@Entity //告诉jpa这是一个实体类
@Table(name="tb_student") //指定与哪个数据表进行对应
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //自增主键
private int id;
private String name;
private String address;
private int age;
private char sex;
//Getter and Setter
}
编写一个Dao接口来操作实体类对应的数据表(Repository)
//继承JpaRepository来完成对数据库的操作
public interface StudentRepository extends JpaRepository<Student, Integer> {
}
编写一个Service业务层类
@Service
public class StudentService {
@Resource //定义数据访问层接口对象
private StudentRepository studentRepository;
@Transactional
public void saveALL(List<Student> students){
studentRepository.saveAll(students);
}
public Student getStuByName(String name){
return studentRepository.findByName(name);
}
2、JDBC
pom文件中的maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置文件application.properties配置数据源
### 数据源信息配置
# 数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/jdbctemplate?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useUnicode=true&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
# 用户名配置
spring.datasource.username=root
# 密码
spring.datasource.password=123456
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
编写一个实体类(bean)
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private int id ;
private String loginName ;
private String username ;
private String password;
//setter和getter
}
编写一个Dao接口来操作实体类对应的数据表(Repository)
@Repository //标注这是一个持久化操作对象
public class UserRepository {
// 注入JdbcTemplate模板对象
@Resource
private JdbcTemplate jdbcTemplate;
/***
* 插入数据
* @return 插入影响的行数
*/
public int insertUser(){
String sql = "insert into tb_user(login_name ,username ,passWord) "
+ "values (?,?,?),(?,?,?),(?,?,?)";
Object[] args = new Object[]{"swk","孙悟空","123456","zbj","猪八戒","123456"
,"ts","唐僧","123456"};
// 参数一:插入数据的sql语句 参数二: 对应sql语句中占位符?的参数
return jdbcTemplate.update(sql, args);
}
...
编写一个Service业务层类
@Service
public class UserService {
// 注入UserRepository
@Resource
private UserRepository userRepository;
3、整合Mybatis
pom文件中的maven依赖
<!-- 添加MySQL依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 添加MyBatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
配置文件和实体类同上
编写一个Dao接口
public interface UserRepository {
@Insert("insert into tb_user(login_name ,username ,password) "
+ "values (#{loginName},#{username},#{password})")
public int insertUser(User user);
编写一个Service业务层类
@Service
public class UserService {
// 注入UserRepository
@Resource
private UserRepository userRepository;
public int insertUser(User user){
return userRepository.insertUser(user);
}
比较:
1、Jpa和Mybatis的主要区别是Jpa的接口直接继承JpaRrpository,自动生成SQL语句;Mybatis的接口需要开发者提供SQL语句,而且需要在Controller类中使用@MapperScan("包名")。