Spring学习之数据库操作

Spring boot ------> Mybatis  +  MySQL

Mybatis的使用简短说明:

  1. 使用SqlSessionFactory创建并初始化一个对象factory;
  2. 使用factory打开一个Session对象,使用factory.openSession()方法,得到一个session对象
  3. 使用session.getMapper得到一个Mapper的映射,返回mapper对象
  4. 最后使用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异步方式提交表单,返回数据响应.

 

转载于:https://www.cnblogs.com/PoorGuy/p/10278843.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值