Spring學習總結--------數據庫操作
阿新 • • 發佈:2019-01-16
glib 早期 username 加載 name json格式 lib highlight HERE
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學習總結--------數據庫操作