SpringBoot-数据持久化

配置数据源

在application.properties文件中进行配置

spring.datasource.url=jdbc:mysql://lacalhost:3306/freeroom
spring.datasource.username=root
spring.datasource.password=123
# 最大等待连接中的数量 0无限制
spring.datasource.tomcat.max-idle=10
# 最大连接活动数
spring.datasource.tomcat.max-active=50
# 数据库连接池初始化连接数
spring.datasource.tomcat.initial-size=5

JdbcTemplate

JdbcTemplate模版是Spring框架提供的,在实际的工作使用较少,基本上都在使用HibernateMyBatis

JPA(Hibernate)

JPA(Java Persistence API ,java持久化API),在spring boot中JPA是依靠Hibernate才得以实现的。

使用方法

修改pom.xml

添加jpa的依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>          
定义一个实体
@Entity(name = "user")
@Table(name="jpademo")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id =null;

    @Column(name = "name")
    private String name=null;
    /**
     * setter and getter  必须要有不然拿不到数据
     */
}
  • @Entity 标注这是一个实体类
  • @Table 配置的属性name指定映射数据库的表
  • @Id 标注那个属性为表的逐渐
  • @GeneratedValue配置采用何种策略生成主键
  • @Column 如果属性名和数据库的不一致可以使用这个注解来指定
定义一个接口
interface JpaUserRespository extends JpaRepository<User,Long> {
}

此接口不用实现定义就行了,之后会自动注入

查询
@Controller
@RequestMapping("/jpa")
public class JpaController {
    @Autowired
    private JpaUserRespository jpaUserRespository = null;

    @RequestMapping("/getUser")
    @ResponseBody
    public User getUser(){
        User user = jpaUserRespository.findAll().get(0);
        return user;
    }
}

在对数据进行操作的时候,使用自动注入的jpaUserRespository实例进行操作。

最后一步

最后需要将接口扫描到Spring IoC容器中。同时还需要将实体类(Entity Bean)注册给JPA。使用@EnableJpaRespositories和@EntityScan两个注解来实现

@SpringBootApplication
@EnableJpaRepositories
@EntityScan
public class FreeRomeApplication {
    public static void main(String[] args) {
        System.out.println("开始");
        SpringApplication.run(FreeRomeApplication.class,args);
        System.out.println("结束");
    }
}

JPA配置

同样也是在application.properties

# 选择Hibernate数据定义语言(DDl)策略为update
spring.jpa.hibernate.ddl-auto=update

JPA查询语言

为了更加灵活的查询,可以使用JPA查询语言(JPQL)。使用方式是@Query标识语句。

JPA命名查询

在先前的JpaUserRespository接口中添加方法
例:

 public User findByName(String name);

等效于

select u from User u where u.name = ?1

也就是说findByName 会根据相应表里的字段name来select 参数name就是要查询的内容

MyBatis

现目前java持久层最为主流的技术应该就是MyBatis,它更简单、灵活、易用。
参考教程

使用方法

基础配置

MyBatis是基于SqlSessionFactory构建的框架

  1. 添加依赖

第一步也是要先引入依赖mybatis-spring-boot-startermysql-connector-java
可以在https://mvnrepository.com/找mybatis-spring-boot-starter的最新版本

  1. 配置文件
server.port=8333
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/erp?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=153963
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  1. 创建Bean
public class User{
  private int id;
  private String name;
  priavte int age;
  private double money;
  /**
  setter,getter and toString 
  **/
}
全注解方式
  1. Dao层开发
@Mapper
public interface UserDao{
/**
 1. 通过名字查询用户信息
**/
@Select("SELECT * FROM user WHERE name = #{name}")
User findUserByName(@Param("name")String name);
/**
 2. 查询所有用户信息
**/
@Select("SELECT * FROM user")
List<User> findAllUser();
/**
 3. 插入用户信息
**/
@Insert("INSERT INTO user(name,age,money) Values(#{name},#{age},#{money})")
void insertUser(@Param("name") String name,@Param("age") Integer age),@Param("money") Double money)
  /**
     * 根据 id 更新用户信息
     */
@Update("UPDATE  user SET name = #{name},age = #{age},money= #{money} WHERE id = #{id}")
void updateUser(@Param("name") String name,@Param("age") Integer age, @Param("money") Double money,@Param("id") int id);
    /**
     * 根据 id 删除用户信息
     */
@Delete("DELETE from user WHERE id = #{id}")
void deleteUser(@Param("id") int id);
}
  1. Service层
@Service
public class UserService{
@Autowired
private UserDao userDao;
public User selectUserByName(String name){
  return userDao.findUserByName(name);
}
/**
*........
**/
/**
* 根据id 删除用户
*/
public void deleteService(int id) {
userDao.deleteUser(id);
    }

}

注意如果@Autowired UserDao时提示找不到可以尝试以下方法:
方法1:在mapper文件上加@Repository注解,这是从spring2.0新增的一个注解,用于简化 Spring 的开发,实现数据访问
方法2:在mapper文件上加@Component注解,把普通pojo实例化到spring容器中

  1. Controller层
@RestController
@RequestMapping("/user")
public class UserController{
@Autowired
private UserService userService'
@RequestMapping("/query")
public User testQuery(){
   return userService.selectUserByName("Daisy");
}
    @RequestMapping("/insert")
    public List<User> testInsert() {
        userService.insertService();
        return userService.selectAllUser();
    }


    @RequestMapping("/changemoney")
    public List<User> testchangemoney() {
        userService.changemoney();
        return userService.selectAllUser();
    }

    @RequestMapping("/delete")
    public String testDelete() {
        userService.deleteService(3);
        return "OK";
    }
]
  1. 启动类
//此注解表示SpringBoot启动类
@SpringBootApplication
// 此注解表示动态扫描DAO接口所在包,实际上不加下面这条语句也可以找到
@MapperScan("top.snailclimb.dao")
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }

}
XML文件方式
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炸天帮陈长生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值