上一篇文章:《Mybatis基本知識十六:查詢緩存之第三方查詢緩存》
若文中有紕漏,請多多指正!!!
1.前言
使用Mybatis進行開發,不僅可以使用mapper配置文件進行開發,也可以使用注解的方式。映射文件中無非就是存放著增、刪、改、查的SQL映射標簽,Mybatis注解式開發就是要替換映射文件中的SQL標簽。
本章節主要講解單表式注解開發,用于注解開發的入門案例講解,后續將講解動態SQL注解式開發以及關聯關系型注解開發。
2.數據準備(MySql數據庫)
/**商品信息*/create table productinfo( id int primary key auto_increment, --主鍵 proName varchar(50),--商品名稱 proNo varchar(50), --商品編號 proDescription varchar(200)--商品描述);
public class ProductInfo { private Integer id;//主鍵 private String proName;//商品名稱 private String proNo;//商品編號 private String proDescription;//商品描述}
3.單表的增刪改查注解配置
1)Mybatis進行注解開發大概有以下幾點事項:
- 只需配置主配置文件。
- mapper配置文件不再需要配置。
- 接口中進行注解配置。
2)關于插入數據自動獲取主鍵的問題(示例中都有配置):
useGeneratedKeys: 配置此屬性會告訴MyBatis利用JDBC 的 getGeneratedKeys 方法來取出由數據(比如:MySQL 和 SQL Server 這樣的數據庫中自動遞增字段)內部生成的主鍵。默認:false。
keyProperty: 標記一個屬性(一般為要映射實體的屬性), MyBatis 會通過 getGeneratedKeys 或者通過 insert 語句的 selectKey 子元素設置它的值。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。
keyColumn :通過生成的鍵值設置表中的列名。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。如果數據庫支持自動生成主鍵的字段(比如 MySQL 和 SQL Server),那么你可以設置 useGeneratedKeys=”true”,然后再把 keyProperty 設置到目標屬性上就OK。如果數據庫還支持多行插入, 也可以傳入一個數組或集合,并返回自動生成的主鍵。
對于不支持自動生成主鍵類型的數據庫或可能不支持自動生成主鍵的JDBC 驅動來說,可以使用標簽獲取主鍵。
3)增刪改查的簡單配置如下:
/**Dao層接口*/public interface ProductInfoDao { /**保存信息,并返回主鍵**/ @Insert("insert into ProductInfo(proName,proNo,proDescription) values(#{proName},#{proNo},#{proDescription})") @Options(useGeneratedKeys = true,keyProperty="id",keyColumn="id") //@SelectKey(statement="select @@identity",keyColumn="id",keyProperty="id",before=false,resultType = int.class) void saveProducrInfoCatchID(ProductInfo proInfo); /**獲取所有返回LIST*/ @Select("select * from ProductInfo") @Results({ @Result(id=true,property="id",column="id"), @Result(property="proName",column="proName"), @Result(property="proNo",column="proNo"), @Result(property="proDescription",column="proDescription") }) List findAllListInfo(); /**根據主鍵查詢*/ @Select("select * from ProductInfo where id = #{id}") ProductInfo findById(int id); /**根據商品編號模糊查詢*/ @Select("select * from ProductInfo where proNo like concat('%',#{proNo},'%')") List findProInfoByProNo(String proNo); //刪除 @Delete("delete from productInfo where id = #{id}") void deleteByID(int id); //修改 @Update("update productInfo set proName = #{proName},proNo=#{proNo},proDescription=#{proDescription} where id = #{id}") void updateProduct(ProductInfo info);}
public class TestDemo { private ProductInfoDao dao; SqlSession sqlSession = null; @Before public void setUp() throws Exception{ sqlSession = MyBatisUtil.getSqlSession(); dao = sqlSession.getMapper(ProductInfoDao.class); } /**保存信息,并返回主鍵**/ @Test public void saveProducrInfoCatchID(){ ProductInfo proInfo = new ProductInfo("電冰箱","002","最新款電冰箱"); System.out.println("執行前:"+proInfo); dao.saveProducrInfoCatchID(proInfo); System.out.println("執行后:"+proInfo); sqlSession.commit();//提交 } //查詢所有 @Test public void findAllListInfo(){ List list = dao.findAllListInfo(); if(list != null){ for (ProductInfo productInfo : list) { System.out.println(productInfo); } } } /**根據主鍵查詢*/ @Test public void findById(){ ProductInfo pro = dao.findById(4); System.out.println(pro); } /**根據商品編號模糊查詢*/ @Test public void findProInfoByProNo(){ List list = dao.findProInfoByProNo("001"); if(list != null){ for (ProductInfo productInfo : list) { System.out.println(productInfo); } } } /**簡單刪除*/ @Test public void deleteByID(){ dao.deleteByID(7); } /**簡單修改*/ @Test public void updateProductById(){ //1.查詢修改對象 ProductInfo beforeInfo = dao.findById(6); System.out.println("執行前beforeInfo:"+beforeInfo); //2.修改值 beforeInfo.setProDescription("修改了電視"); //3.執行更新操作 dao.updateProduct(beforeInfo); //4.再查詢 ProductInfo afterInfo = dao.findById(6); System.out.println("執行后afterInfo:"+afterInfo); } @After public void setDown(){ if(sqlSession != null) sqlSession.close(); }}
進行完DAO接口的注解配置,一個簡單的單表的增刪改查也就完成了。有興趣的learner可以親自動手試一下。
4.基本注解
增刪改查相關注解
結果集映射相關注解
結果集映射相關注解
5.下載練習
鏈接:https://pan.baidu.com/s/1wxDPaght70sIPEV-DEeT_w 提取碼:4im4
總結
以上是生活随笔為你收集整理的@select注解_Mybatis基本知识十七:Mybatis注解式开发-单表注解式开发的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。