最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis使用注解開發(fā)實現(xiàn)過程詳解

 更新時間:2020年03月19日 15:03:02   作者:黃大姐の老公  
這篇文章主要介紹了MyBatis使用注解開發(fā)實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

使用注解開發(fā)

1、面向接口編程

面向接口編程的根本原因:解耦,可擴展,提高復用,分層開發(fā)中、上層不用管具體的實現(xiàn),大家都遵守共同的標準,使得開發(fā)變得容易,規(guī)范性好

2、使用注解開發(fā)

注解在接口上實現(xiàn)

@Select(value = "select * from user")
List<User> getUsers();

需要在核心配置文件中綁定接口

<!--綁定接口-->
<mappers>
  <mapper class="rui.dao.UserMapper"/>
</mappers>

測試

public class UserMapperTest {
  @Test
  public void test(){
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    //底層主要應用反射
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    List<User> users = mapper.getUsers();
    for (User user : users) {
      System.out.println(user);
    }
    sqlSession.close();
  }
}

本質(zhì):反射機制實現(xiàn)

底層:動態(tài)代理

3、CRUD

我們可以在工具類創(chuàng)建的時候?qū)崿F(xiàn)自動提交事務

public static SqlSession getSqlSession(){
  return sqlSessionFactory.openSession(true);
}

編寫接口,增加注解

public interface UserMapper {
  @Select(value = "select * from user")
  List<User> getUsers();

  //方法存在多個參數(shù),所有的參數(shù)前面必須加上@Param注解
  @Select("select * from user where id = #{id} or name = #{name}")
  User getUserByID(@Param("id")int id,@Param("name")String name);

  @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
  int addUser(User user);

  @Update("update user set name = #{name},pwd = #{password} where id = #{id}")
  int updateUser(User user);

  @Delete("delete from user where id = #{uid}")
  int deleteUser(@Param("uid") int id);
}

測試類

【注意:我們必須要將接口注冊綁定到我們的核心配置文件中】

關(guān)于@Param()注解

  • 基本類型的參數(shù)或者String類型,需要加上
  • 引用類型不需要加
  • 如果只有一個基本類型的化,可以忽略,但是建議都加上
  • 我們在SQL中引用的就是我們這里的@Param()中設定的屬性名

#{} ${}區(qū)別

  • {}是預編譯處理,${}是字符串替換
  • mybatis在處理#{}時,會將sql中的#{}替換為?號,調(diào)用PreparedStatement的set方法來賦值;mybatis在處理${}時,就是把${}替換成變量的值
  • 使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringMVC如何接收參數(shù)各種場景

    SpringMVC如何接收參數(shù)各種場景

    這篇文章主要介紹了SpringMVC如何接收參數(shù)各種場景,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 精通Java List 按字段提取對象

    精通Java List 按字段提取對象

    這篇文章主要介紹了精通Java List 按字段提取對象的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Java之PreparedStatement的使用詳解

    Java之PreparedStatement的使用詳解

    這篇文章主要介紹了Java之PreparedStatement的使用詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java特性隊列和棧的堵塞原理解析

    Java特性隊列和棧的堵塞原理解析

    這篇文章主要介紹了Java特性隊列和棧的堵塞原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java調(diào)用opencv IDEA環(huán)境配置的教程詳解

    Java調(diào)用opencv IDEA環(huán)境配置的教程詳解

    這篇文章主要為大家詳細介紹了Java調(diào)用opencv IDEA環(huán)境配置的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • SpringBoot入門教程詳解

    SpringBoot入門教程詳解

    SpringBoot?是由?Pivotal?團隊提供的全新框架,其設計目的是用來簡化?Spring?應用的初始搭建以及開發(fā)過程。本文將詳細為大家講講SpringBoot是使用,需要的可以參考一下
    2022-06-06
  • 使用注解@Recover優(yōu)化丑陋的循環(huán)詳解

    使用注解@Recover優(yōu)化丑陋的循環(huán)詳解

    我們知道在實現(xiàn)一個功能的時候是可以使用不同的代碼來實現(xiàn)的,那么相應的不同實現(xiàn)方法的性能肯定也是有差別的,下面這篇文章主要給大家介紹了關(guān)于使用注解@Recover優(yōu)化丑陋的循環(huán)的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 使用springboot+druid雙數(shù)據(jù)源動態(tài)配置操作

    使用springboot+druid雙數(shù)據(jù)源動態(tài)配置操作

    這篇文章主要介紹了使用springboot+druid雙數(shù)據(jù)源動態(tài)配置的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型

    淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型

    這篇文章主要介紹了淺談spring ioc的注入方式及注入不同的數(shù)據(jù)類型,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 淺談java中字符串數(shù)組、字符串、整形之間的轉(zhuǎn)換

    淺談java中字符串數(shù)組、字符串、整形之間的轉(zhuǎn)換

    這篇文章主要介紹了淺談java中字符串數(shù)組、字符串、整形之間的轉(zhuǎn)換,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論

长岛县| 谢通门县| 万山特区| 平山县| 扶绥县| 延川县| 曲周县| 武城县| 广安市| 新化县| 宝丰县| 昌都县| 石阡县| 蕉岭县| 房产| 汉阴县| 阳江市| 桐城市| 山阳县| 吴堡县| 竹溪县| 尼玛县| 高雄县| 三明市| 红河县| 大连市| 开封县| 阳谷县| 林州市| 西贡区| 苏州市| 革吉县| 朝阳县| 兰州市| 嘉善县| 寻乌县| 鄂伦春自治旗| 桐柏县| 沈丘县| 泊头市| 临潭县|