亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis 使用權(quán)威指南

 更新時(shí)間:2017年03月24日 14:43:24   投稿:mrr  
MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集,本文給大家介紹MyBatis 使用指南,一起看看吧

什么是 MyBatis

MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對(duì)配置和原生Map使用簡(jiǎn)單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。

SpringBoot 中使用

使用 Maven

在你的pom.xml中:

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>1.2.1-SNAPSHOT</version>
</dependency>

使用 Gradle

在你的 build.gradle中:

dependencies {
  compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.2.1-SNAPSHOT")
}

使用

目錄結(jié)構(gòu)

--src 
 --main
 --java
  --com.example
  --dao
   --UserDao.java
  --entity
   --User.java
  --DemoApplication.java
  --UserSex.java
 --resources
 --mapper
  --UserMapper.xml
 --application.properties

基于注解

使用MyBatis-Spring-Boot-Starter will:

將自動(dòng)檢測(cè)存在的數(shù)據(jù)源

將數(shù)據(jù)源輸入然后創(chuàng)建注冊(cè)一個(gè)SqlSessionFactoryBean實(shí)例

從SqlSessionFactoryBean中創(chuàng)建注冊(cè)一個(gè)SqlSessionTemplate實(shí)例

自動(dòng)掃描你的 mappers,將它們連接到SqlSessionTemplate然后將它們注冊(cè)到 Spring 的上下文

我們新建一個(gè)實(shí)體類User.java,在這里我們使用 Lombok (使用說(shuō)明見(jiàn)這篇文章)來(lái)簡(jiǎn)化代碼

@Data
public class User {
  private Long id;
  private String userName;
  private String password;
  private UserSex userSex;
  private String nickName;
}

接著我們創(chuàng)建一張叫 user的表

DROP TABLE IF EXISTS user;
CREATE TABLE user(
 id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
 user_name VARCHAR(32) DEFAULT NULL COMMENT '用戶名',
 password VARCHAR(32) DEFAULT NULL COMMENT '密碼',
 user_sex VARCHAR(32) DEFAULT NULL ,
 nick_name VARCHAR(32) DEFAULT NULL ,
 PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

然后創(chuàng)建一個(gè) Dao 文件UserDao.java

@Mapper
public interface UserDao {
  @Select("SELECT * FROM user WHERE id = #{id}")
  @Results({
      @Result(property = "userName", column = "user_name"),
      @Result(property = "password", column = "password"),
      @Result(property = "userSex", column = "user_sex", javaType = UserSex.class),
      @Result(property = "nickName",column = "nick_name")
  })
  User findById(@Param("id") Long id);
  @Insert("INSERT INTO user (user_name,password,user_sex ) VALUES (#{userName},#{password},#{userSex})")
  void save(User user);
  @Update("UPDATE user set user_name = #{userName}, nick_name = #{nickName} WHERE id = #{id}")
  void update(User user);
  @Delete("DELETE FROM user where id = #{id}")
  void remove(Long id);
}

每個(gè)方法都對(duì)應(yīng)的對(duì)應(yīng)的 sql 語(yǔ)句,其中@Select注解用于查詢,@Result注解將實(shí)體類屬性跟數(shù)據(jù)庫(kù)的字段一一對(duì)應(yīng),@Insert注解用于插入數(shù)據(jù),@Update注解用于修改數(shù)據(jù),@Delete注解用于刪除

接下來(lái)我們簡(jiǎn)單的測(cè)試下

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
  @Autowired
  UserDao userDao;
  @Test
  public void test(){
    User one = new User();
    one.setUserName("張三");
    one.setPassword("123456");
    one.setUserSex(UserSex.MAN);
    userDao.save(one);
    User two = new User();
    two.setUserName("李四");
    two.setPassword("123456");
    two.setUserSex(UserSex. WOMAN);
    userDao.save(two);
  }
}

結(jié)果如下

結(jié)果

基于 XML 配置

在application.properties配置文件中新增以下配置

mybatis.type-aliases-package= com.example.entity
mybatis.mapper-locations=classpath:mapper/*.xml

然后在resources文件夾中創(chuàng)建mapper文件夾,然后新建一個(gè)userMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.dao.UserDao">
  <resultMap id="userMap" type="com.example.entity.User">
    <result column="id" property="id"/>
    <result column="user_name" property="userName"/>
    <result column="password" property="password"/>
    <result column="user_sex" property="userSex" javaType="com.example.UserSex"/>
    <result column="nick_name" property="nickName"/>
  </resultMap>
  <insert id="save" parameterType="com.example.entity.User">
    INSERT INTO user (user_name,password,user_sex ) VALUES (#{userName},#{password},#{userSex})
  </insert>
  <delete id="remove" parameterType="java.lang.Long">
    DELETE FROM user where id = #{id}
  </delete>
  <update id="update" parameterType="com.example.entity.User">
    UPDATE user SET user_name = #{userName}, nick_name =#{nickName} WHERE id = #{id}
  </update>
  <select id="findById" parameterType="java.lang.Long" resultMap="userMap">
    SELECT * FROM user WHERE id = #{id}
  </select>
</mapper>

然后將UserDao.java文件修改如下

public interface UserDao {
  User findById(Long id);
  void save(User user);
  void update(User user);
  void remove(Long id);
}

最后在SpringBoot的主程序上加上@MapperScan的注解將 dao 文件跟 sql 語(yǔ)句對(duì)應(yīng)起來(lái)

@SpringBootApplication
@MapperScan("com.example.dao")
public class DemoApplication {
 public static void main(String[] args) {
 SpringApplication.run(DemoApplication.class, args);
 }
}

總結(jié)

mybatis-spring-boot-starter可以快速的通過(guò)注解來(lái)開(kāi)發(fā),十分方便,可以靈活的使用 SQL 和調(diào)整 SQL,具體用注解還是基于 XML,我覺(jué)得還是看自己的喜好。

下面看下#{}和${}的區(qū)別

#{}在底層實(shí)現(xiàn)上使用?做占位符來(lái)生成PreparedStatement,然后將參數(shù)傳入,大多數(shù)情況都應(yīng)使用這個(gè),它更快、更安全。

${}將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by ${user_id},如果傳入的值是111,那么解析成sql時(shí)的值為order by 111, 如果傳入的值是id,則解析成的sql為order by id.

以上所述是小編給大家介紹的MyBatis 使用指南,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Spring Boot使用Druid和監(jiān)控配置方法

    Spring Boot使用Druid和監(jiān)控配置方法

    Druid是Java語(yǔ)言中最好的數(shù)據(jù)庫(kù)連接池,并且能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能。下面來(lái)說(shuō)明如何在 Spring Boot 中配置使用Druid
    2017-04-04
  • Java集合類中文介紹

    Java集合類中文介紹

    本文首先對(duì)Java集合類框架做了簡(jiǎn)單說(shuō)明,之后對(duì)主要類和為API做了介紹:Collection、List、Set、AbstractCollection、AbstractList、AbstractSet、Iterator、ListIterator。
    2013-11-11
  • SpringBoot參數(shù)校驗(yàn)之@Validated的使用詳解

    SpringBoot參數(shù)校驗(yàn)之@Validated的使用詳解

    這篇文章主要通過(guò)示例為大家詳細(xì)介紹一下介紹了SpringBoot參數(shù)校驗(yàn)中@Validated的使用方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06
  • BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決

    BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決

    這篇文章主要介紹了BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • jmeter基本使用小結(jié)

    jmeter基本使用小結(jié)

    jmeter是apache公司基于java開(kāi)發(fā)的一款開(kāi)源壓力測(cè)試工具,體積小,功能全,使用方便,是一個(gè)比較輕量級(jí)的測(cè)試工具,使用起來(lái)非常簡(jiǎn)單。本文就簡(jiǎn)單的介紹一下如何使用,感興趣的
    2021-11-11
  • Java基礎(chǔ)之Stream流原理與用法詳解

    Java基礎(chǔ)之Stream流原理與用法詳解

    從Java1.8開(kāi)始提出了Stream流的概念,側(cè)重對(duì)于源數(shù)據(jù)計(jì)算能力的封裝,并且支持序列與并行兩種操作方式。本文就來(lái)為大家詳細(xì)講講Stream流原理與用法
    2022-08-08
  • MyBatis連接池的深入和動(dòng)態(tài)SQL詳解

    MyBatis連接池的深入和動(dòng)態(tài)SQL詳解

    這篇文章主要介紹了MyBatis連接池的深入和動(dòng)態(tài)SQL詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • spring boot集成pagehelper(兩種方式)

    spring boot集成pagehelper(兩種方式)

    這篇文章主要介紹了spring boot集成pagehelper(兩種方式),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • java開(kāi)發(fā)web前端cookie session及token會(huì)話機(jī)制詳解

    java開(kāi)發(fā)web前端cookie session及token會(huì)話機(jī)制詳解

    如果把人體比作一個(gè)web系統(tǒng)的話,cookie、session和token就好像人體的經(jīng)絡(luò)和血管一樣,而web系統(tǒng)中的數(shù)據(jù),就好像人體的血液一樣。血液依靠著血管在人體內(nèi)流動(dòng),就如數(shù)據(jù)根據(jù)cookie和session機(jī)制在web系統(tǒng)中流動(dòng)一樣
    2021-10-10
  • 解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問(wèn)題

    解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問(wèn)題

    這篇文章主要介紹了解決Spring JPA 使用@transaction注解時(shí)產(chǎn)生CGLIB代理沖突問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論