關於接口的理解:java
三個面向區別:sql
mybatis最初配置信息是基於 XML ,映射語句(SQL)也是定義在 XML 中的。而到MyBatis3提供了新的基於註解的配置。不幸的是,Java 註解的的表達力和靈活性十分有限。最強大的 MyBatis 映射並不能用註解來構建編程
sql 類型主要分紅 :mybatis
注意:利用註解開發就不須要mapper.xml映射文件了架構
步驟以下:app
在接口中添加註解jvm
//查詢所有用戶 @Select("select id,name,pwd password from user") public List<User> getAllUser();
在MyBatis的核心配置文件中注入工具
<!--使用class綁定接口--> <mappers> <mapper class="top.linzeliang.mapper.UserMapper"/> </mappers>
進行測試測試
利用Debug查看本質設計
本質上利用了jvm的動態代理機制
MyBatis詳細執行流程
改造咱們MyBatis工具類的getSession()方法,重載實現
//獲取SqlSession鏈接 public static SqlSession getSession(){ return getSession(true); //事務自動提交 } public static SqlSession getSession(boolean flag){ // 默認爲false return sqlSessionFactory.openSession(flag); }
查詢:
編寫接口方法註解
//根據id查詢用戶 @Select("select * from user where id = #{id}") User selectUserById(@Param("id") int id);
進行測試
增長:
編寫接口方法註解
//添加一個用戶 @Insert("insert into user (id, name, pwd) values (#{id}, #{name}, #{pwd})") int addUser(User user);
進行測試
修改:
編寫接口方法註解
//修改一個用戶 @Update("update user set name = #{name}, pwd = #{pwd} where id = #{id}") int updateUser(User user);
進行測試
刪除:
編寫接口方法註解
//根據id刪除用 @Delete("delete from user where id = #{id}") int deleteUser(@Param("id") int id);
進行測試
@Param註解用於給方法參數起一個名字:
INSERT INTO user (name) VALUES (#{name}); INSERT INTO user (name) VALUES (?);
${}的做用是直接進行字符串替換(會致使SQL注入)
INSERT INTO user (name) VALUES ('${name}'); INSERT INTO user (name) VALUES ('zhangsan');