SpringBoot-数据访问
1、JDBC
1 2 3 4 5 6 7 8 9 <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.yml
1 2 3 4 5 6 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/jdbc username: root password: 123456
2、Druid
1 2 3 4 5 <dependency > <groupId > com.alibaba</groupId > <artifactId > druid-spring-boot-starter</artifactId > <version > 1.1.10</version > </dependency >
application.yml
其它配置见Druid
1 2 3 4 5 6 7 8 9 10 11 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/jdbc username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource druid: stat-view-servlet: login-username: admin login-password: admin
3、MyBatis
步骤:
配置数据源相关属性
给数据库建表
创建JavaBean
注解版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 @Mapper public interface UserMapper { @Select("select * from user where id=#{id}") public User getUserById (Integer id) ; @Select("select * from user") List<User> getUsers () ; @Delete("delete from user where id=#{id}") Integer deleteUserById (Integer id) ; @Options(useGeneratedKeys = true,keyProperty = "id") @Insert("insert into user(username) values(#{username})") int insertUser (User user) ; }
1 2 3 4 mybatis: configuration: map-underscore-to-camel-case: true
可在Application上使用@MapperScan(value="com.zephon.mapper")进行批量扫描,避免写太多的@Mapper
配置文件版
1 2 3 4 5 mybatis: config-location: classpath:mybatis/mybatis-config.xml mapper-locations: classpath:mybatis/mapper/*.xml
1 2 3 4 5 @Mapper public interface UserMapper { User getUserById (Integer id) ; void insertUser (User user) ; }
1 2 3 4 5 6 7 8 9 10 11 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration > <settings > <setting name ="mapUnderscoreToCamelCase" value ="true" /> </settings > </configuration >
1 2 3 4 5 6 7 8 9 10 11 12 13 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace ="com.zephon.mapper.UserMapper" > <select id ="getUserById" resultType ="com.zephon.bean.User" > select * from user where id=#{id} </select > <insert id ="insertUser" > insert into user(username) values(#{username}) </insert > </mapper >
4、SpringData JPA
特点
SpringData为我们提供使用统一的API来对数据访问层进行操作,这主要是Spring Data Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问技术时基于Spring提供的统一标准,标准包含了CRUD、查询、排序和分页的相关操作
步骤
编写一个实体类(bean)和数据表进行映射,并且配置好映射关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 @Entity @Table(name="tbl_user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(name="user_name",length = 50) private String username;
编写一个Dao接口来操作实体类对应的数据表(Repository)
1 2 3 4 5 6 7 public interface UserRepository extends JpaRepository <User ,Integer > {}
基本的配置
1 2 3 4 5 6 7 8 spring: jpa: hibernate: ddl-auto: update show-sql: true
在Controller中直接使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @RestController public class UserController { @Autowired UserRepository userRepository; @GetMapping("/user/{id}") public User getUser (@PathVariable("id") Integer id) { User user = userRepository.findById(id).get(); return user; } @GetMapping("/user") public User insetUser (User user) { User save = userRepository.save(user); return save; } }