1. 程式人生 > >Spring學習總結--------數據庫操作

Spring學習總結--------數據庫操作

glib 早期 username 加載 name json格式 lib highlight HERE

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異步方式提交表單,返回數據響應.

Spring學習總結--------數據庫操作