Made by Tianlanghttps://github.com/Tianlang-create背景左家垅大学安排计算机专业的学生在期末前进行了JavaWeb的实训Tianlang对此很疑惑1什么是数据库怎么使用 2怎么在IDEA连接数据库 3怎么搭建应用DSC框架 特别地Dao层或Repository怎么和数据库搭上关系Service层又怎么实现调用Dao接口Controller层和之前做的应用选择块有什么联系Xushu老师笑着说针对概念问题反正现在也没时间知道了具体方法如下连接数据库问题在src/main/resources/application.properties里添加如下代码?server.port8088 ?spring.datasource.urljdbc:mysql://localhost:3306/springdemo ?spring.datasource.usernameroot ?spring.datasource.password#你的数据库密码 ?spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver ?spring.jpa.hibernate.ddl-autoupdate这些代码分别是什么意思呢 1行是我们设置的端口号2-6行的开头都是spring框架内容jdbc:mysql:数据库驱动类型MySQL://localhost:数据库服务器地址本地主机:3306:数据库端口号MySQL默认端口/springdemo:数据库名称spring.datasource.driver-class-name是数据源的驱动类名com.mysql.cj.jdbc.Driver是MySQL数据库的驱动类名用于Java 8及以上版本特别地倘若我们要在终端实现SQL语句的输出可以再添加:?spring.jpa.show-sqltrue ?spring.jpa.properties.hibernate.format_sqltrueDao层实现和数据库交互后Service层怎么“通知”Dao我要使用1.Dao与数据库的“交互”在目录页新建了Dao软件包后话不多说我们直接拍上代码?package com.demo.springdemo.Dao; ?? ?import com.demo.springdemo.entity.User; ?import org.springframework.data.repository.CrudRepository; ?import org.springframework.stereotype.Repository; ?? ?Repository//spring的bean 细化了逻辑块 ?public interface UserRepository extends CrudRepositoryUser, Integer {//继承CrudRepository ?} ?? ?//参考路径:com/demo/springdemo/Dao/UserRepository.java怎么理解Dao层实现和数据库交互我们其实通过Spring框架之前博客写过如在第七行写下注解Repository标记一个类或接口为数据访问层DAO的实现这其实就是表明UserRepository接口是数据访问层的一部分。接下来继承CrudRepository接口之后UserRepository接口可以提供基本的CRUD操作并且可以根据需要添加自定义的方法来实现更复杂的数据访问逻辑肯定有同学会问什么是接口我该怎么使用接口假设我们有一个动物园里面有不同的动物。我们可以定义一个Animal接口如下?javaCopyInsertpublic interface Animal { ? ? ?void sound(); ?}这个接口定义了一个sound方法所有动物都应该能够发出声音。现在我们可以实现这个接口的不同类例如?javaCopyInsertpublic class Dog implements Animal { ? ? ?Override ? ? ?public void sound() { ? ? ? ? ?System.out.println(汪汪); ? ? } ?} ?? ?public class Cat implements Animal { ? ? ?Override ? ? ?public void sound() { ? ? ? ? ?System.out.println(喵喵); ? ? } ?}这两个类都实现了Animal接口但是它们的实现方式不同。现在我们可以使用这些类来实现动物园的功能如下?javaCopyInsertAnimal dog new Dog(); ?dog.sound(); // 汪汪 ?? ?Animal cat new Cat(); ?cat.sound(); // 喵喵通过使用接口我们可以实现不同类之间的解耦和扩展性。那么进入了我们Service层后其基本核心也是一样的。其实通过使用Autowired注解开发者可以不需要手动创建UserRepository的实现类也不需要手动注入依赖的bean。Spring会自动完成这些工作。2.Service层使用CRUD操作在Spring框架中Autowired注解可以自动注入依赖的bean。由于UserRepository是接口所以Spring会自动创建一个实现该接口的bean并将其注入到当前类中我们直接上代码?Service ?//配置Spring的bean ?public class UserService implements IUserService { ?? ? ? ?Autowired ? ? ?UserRepository userRepository; ? ? ?Override ? ? ?public User add(UserDto user) {//修改类型 ? ? ? ? ?User userPojo new User(); ? ? ? ? ?BeanUtils.copyProperties(user, userPojo); ? ? ? ? ?return userRepository.save(userPojo); ? ? ? ? ?//调用数据访问类方法 ? ? }着重理解的是我们不意味着在Service层只需要调用接口就行了使用Service注解来标记一个类表示它是一个服务层组件。然后使用依赖注入将DAO接口注入到服务层组件中以便在服务层中使用DAO的实现类来执行数据库操作此时我们看用户的增操作这里的UserDto user前一个是我们构建的用户实体类(内容个数如IDEmail等)user是我们在Controller接受的UserDto对象其实真正的增加操作只是userRepository.save(userPojo)其上两行是类型转换为User,UserDto的类是User的限制情况因为我这里是判定用户的错误输入情况以及网络攻击简而言之是以User形式存储在数据库中存储方法我们在之前的Dao层通过扩展CRUD实现相似的删除改变查询不再一一赘述了。Controller层–与网络的交流层我们之前在Service层不是要传入一个User吗源头就在这里我们直接放代码?RestController // 接口方法返回值为json ?RequestMapping(/user) ?// 前缀 localhost:8088/user ?public class User_controller { ?? ? ? ?Autowired ? ? ?IUserService userService;//IUserService 接口的实例 userService 是通过 Autowired 注解自动注入的。 ? ? ?//REST ? ? ?//增加 ? ? ?PostMapping ? ? ?public String add(Validated RequestBody UserDto user){//提示传入文本 ? ? ? ? ?User userNew userService.add(user); ? ? ? ? ?return ResponseMessage.success(userNew).toString(); ? ? }}直接看add功能RequestBody UserDto user代表了从JSON格式中自动提取useruserService.add是我们之前在Service中实现的add方法正确返回User后发送信息以上就是三层的实现流程该实例的所有代码请查询开头的github账号目前基本功能已经实现。江湖相逢缘是君感谢观看