Spring学习总结--------数据库操作
Posted poorguy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring学习总结--------数据库操作相关的知识,希望对你有一定的参考价值。
Spring boot ------> Mybatis + mysql
Mybatis的使用简短说明:
- 使用SqlSessionFactory创建并初始化一个对象factory;
- 使用factory打开一个Session对象,使用factory.openSession()方法,得到一个session对象
- 使用session.getMapper得到一个Mapper的映射,返回mapper对象
- 最后使用mapper.方法(对数据库进行操作)
以上的是Mybatis的使用过程(简短介绍),Mybatis的具体使用将会在后面的博客中给出,也可以自己查看官方文档
Spring boot优点:
我们都学习过使用jdbc连接数据库,Mybatis已经使得对数据库的操作简单了许多,但是当你看到Spring boot的时候你会发现Spring boot将更加简短
首先Spring boot通过依赖注入技术,动态加载,使得Mybatis的1,2,3三个操作直接用Spring帮我们完成,我们只需要直接调用数据库操作的方法即可
Spring boot 数据库配置:
打开Spring的配置文件application.properties
server.port=9000 logging.level.web=debug #数据源 SqlSessionFactory spring.datasource.url=jdbc:mysql://127.0.0.1:3306/quzz?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- port:配置浏览器访问端口
- logging.level.web:配置日志等级
- url:配置数据库URL
- username:数据库连接用户名
- password:数据库密码
- driver-class-name:驱动器类名
其实我们发现这里的配置和Mybatis很像,
Mybatis配置信息如下:(下面是官方给的配置文件)
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration>
对于这个配置文件和Spring相比,我们可以看出Spring更加简短,易于记忆,而Mybatis基本上每次配置都要去复制,因为很少有人能直接记下来而且一点都不错,所以在这里也看出来Spring在数据库配置上的简单.
下面给出一个操控数据库的例子:
下面是quzz数据库中question表中的数据:
Mapper接口:
@Mapper public interface QuestionMapper { @Select("select * from question where id = {id}") Question sel(@Param("id") int id); @Select("select * from question") List<Question> list(); }
QuizService接口:
public interface QuizService { /** * 加载试题 * @return */ List<Question> loadQuestion(); }
QuizService的实现类:
@Service public class QuizServiceImpl implements QuizService { /** * Ioc/DI控制反转/依赖注入(动态代理 cglib) * 自动装配 */ @Autowired QuestionMapper questionMapper; /** * 早期使用SetQuertionMapper * 后期不使用了,直接取替 * @param questionMapper */ // @Autowired // public void setQuestionMapper(QuestionMapper questionMapper) { // this.questionMapper = questionMapper; // } // @Override public List<Question> loadQuestion() { // TODO Auto-generated method stub //依赖资源的自动注入 return questionMapper.list(); } }
HomeController类:
@Controller @RequestMapping public class HomeController { //面试:在Springboot中你都用过哪些注解 @GetMapping("/") public String home() { return "index.html"; } }
QuizQuestion控制类:
@RestController @RequestMapping("/text") public class QuizController { /** * 给控制器注入 业务逻辑对象 */ @Autowired QuizServiceImpl quizService; @GetMapping public List<Question>get(){ return quizService.loadQuestion(); } }
上述实体类没有给出:实体类中字段与数据库中字段相同.
前端Html页面:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>Spring Boot Text</h1> <h2><a href="/text">在线测试</a></h2> </body> </html>
运行结果:
输入127.0.0.1:9000自动加载html页面,当我们点击在线测试时,会将数据库中数据以JSon格式发回来:
在实际开发中可以使用js异步方式提交表单,返回数据响应.
以上是关于Spring学习总结--------数据库操作的主要内容,如果未能解决你的问题,请参考以下文章