Mybatis注解開發(fā)-2020.03.25

mybatis注解開發(fā)的環(huán)境搭建

  • pom.xml and SqlMapConfig.xml
   <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.itheima</groupId>
   <artifactId>day04_eesy_03annotation_mybatis</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>

   <dependencies>
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.4.5</version>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.6</version>
       </dependency>
       <dependency>
           <groupId>log4j</groupId>
           <artifactId>log4j</artifactId>
           <version>1.2.12</version>
       </dependency>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.10</version>
       </dependency>
   </dependencies>
</project>


<?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>
   <!-- 引入外部配置文件-->
   <properties resource="jdbcConfig.properties"></properties>
   <!--配置別名-->
   <typeAliases>
       <package name="com.itheima.domain"></package>
   </typeAliases>
   <!-- 配置環(huán)境-->
   <environments default="mysql">
       <environment id="mysql">
           <transactionManager type="JDBC"></transactionManager>
           <dataSource type="POOLED">
               <property name="driver" value="${jdbc.driver}"></property>
               <property name="url" value="${jdbc.url}"></property>
               <property name="username" value="${jdbc.username}"></property>
               <property name="password" value="${jdbc.password}"></property>
           </dataSource>
       </environment>
   </environments>
   <!-- 指定帶有注解的dao接口所在位置 -->
   <mappers>
       <mapper class="com.itheima.dao.IUserDao"></mapper>
   </mappers>
</configuration>
  • User.java and IUserDao.java
   package com.itheima.domain;

import java.io.Serializable;
import java.util.Date;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class User implements Serializable{

   private Integer id;
   private String username;
   private String address;
   private String sex;
   private Date birthday;

   public Integer getId() {
       return id;
   }

   public void setId(Integer id) {
       this.id = id;
   }

   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   public String getAddress() {
       return address;
   }

   public void setAddress(String address) {
       this.address = address;
   }

   public String getSex() {
       return sex;
   }

   public void setSex(String sex) {
       this.sex = sex;
   }

   public Date getBirthday() {
       return birthday;
   }

   public void setBirthday(Date birthday) {
       this.birthday = birthday;
   }

   @Override
   public String toString() {
       return "User{" +
               "id=" + id +
               ", username='" + username + '\'' +
               ", address='" + address + '\'' +
               ", sex='" + sex + '\'' +
               ", birthday=" + birthday +
               '}';
   }
}


package com.itheima.dao;

import com.itheima.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
* 在mybatis中針對,CRUD一共有四個(gè)注解
*  @Select @Insert @Update @Delete
*/
public interface IUserDao {

   /**
    * 查詢所有用戶
    * @return
    */
   @Select("select * from user")
   List<User> findAll();
}

mybatis注解開發(fā)測試和使用注意事項(xiàng)

  • MybatisAnnoTest.java
    package com.itheima.test;

import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class MybatisAnnoTest {

   /**
    * 測試基于注解的mybatis使用
    * @param args
    */
   public static void main(String[] args) throws  Exception{
       //1.獲取字節(jié)輸入流
       InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
       //2.根據(jù)字節(jié)輸入流構(gòu)建SqlSessionFactory
       SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
       //3.根據(jù)SqlSessionFactory生產(chǎn)一個(gè)SqlSession
       SqlSession session = factory.openSession();
       //4.使用SqlSession獲取Dao的代理對象
       IUserDao userDao = session.getMapper(IUserDao.class);
       //5.執(zhí)行Dao的方法
       List<User> users = userDao.findAll();
       for(User user : users){
           System.out.println(user);
       }
       //6.釋放資源
       session.close();
       in.close();
   }
}

mybatis注解開發(fā)保存和更新功能

  • IuserDao.java
  package com.itheima.dao;

import com.itheima.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
* 在mybatis中針對,CRUD一共有四個(gè)注解
*  @Select @Insert @Update @Delete
*/
public interface IUserDao {

   /**
    * 查詢所有用戶
    * @return
    */
   @Select("select * from user")
   List<User> findAll();

   /**
    * 保存用戶
    * @param user
    */
   @Insert("insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday})")
   void saveUser(User user);

   /**
    * 更新用戶
    * @param user
    */
   @Update("update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}")
   void updateUser(User user);

  
}

  • AnnotationCRUDTest.java
    package com.itheima.test;

import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.Date;
import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class AnnotationCRUDTest {
   private InputStream in;
   private SqlSessionFactory factory;
   private SqlSession session;
   private IUserDao userDao;

   @Before
   public  void init()throws Exception{
       in = Resources.getResourceAsStream("SqlMapConfig.xml");
       factory = new SqlSessionFactoryBuilder().build(in);
       session = factory.openSession();
       userDao = session.getMapper(IUserDao.class);
   }

   @After
   public  void destroy()throws  Exception{
       session.commit();
       session.close();
       in.close();
   }


   @Test
   public void testSave(){
       User user = new User();
       user.setUsername("mybatis annotation");
       user.setAddress("北京市昌平區(qū)");

       userDao.saveUser(user);
   }

   @Test
   public void testUpdate(){
       User user = new User();
       user.setId(57);
       user.setUsername("mybatis annotation update");
       user.setAddress("北京市海淀區(qū)");
       user.setSex("男");
       user.setBirthday(new Date());

       userDao.updateUser(user);
   }

}

mybatis注解開發(fā)CRUD和其他操作

  • IuserDao.java
     /**
    * 刪除用戶
    * @param userId
    */
   @Delete("delete from user where id=#{id} ")
   void deleteUser(Integer userId);

   /**
    * 根據(jù)id查詢用戶
    * @param userId
    * @return
    */
   @Select("select * from user  where id=#{id} ")
   User findById(Integer userId);

   /**
    * 根據(jù)用戶名稱模糊查詢
    * @param username
    * @return
    */
//    @Select("select * from user where username like #{username} ")
   @Select("select * from user where username like '%${value}%' ")
   List<User> findUserByName(String username);

   /**
    * 查詢總用戶數(shù)量
    * @return
    */
   @Select("select count(*) from user ")
   int findTotalUser();
  • AnnotationCRUDTest.java
   @Test
   public void testDelete(){
       userDao.deleteUser(51);
   }

   @Test
   public void testFindOne(){
       User user = userDao.findById(57);
       System.out.println(user);
   }


   @Test
   public  void testFindByName(){
//        List<User> users = userDao.findUserByName("%mybatis%");
       List<User> users = userDao.findUserByName("mybatis");
       for(User user : users){
           System.out.println(user);
       }
   }

   @Test
   public  void testFindTotal(){
       int total = userDao.findTotalUser();
       System.out.println(total);
   }

mybatis注解建立實(shí)體類屬性和數(shù)據(jù)庫表中列的對應(yīng)關(guān)系

  • User.java
  package com.itheima.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class User implements Serializable{

   private Integer userId;
   private String userName;
   private String userAddress;
   private String userSex;
   private Date userBirthday;


   public void setAccounts(List<Account> accounts) {
       this.accounts = accounts;
   }

   public Integer getUserId() {
       return userId;
   }

   public void setUserId(Integer userId) {
       this.userId = userId;
   }

   public String getUserName() {
       return userName;
   }

   public void setUserName(String userName) {
       this.userName = userName;
   }

   public String getUserAddress() {
       return userAddress;
   }

   public void setUserAddress(String userAddress) {
       this.userAddress = userAddress;
   }

   public String getUserSex() {
       return userSex;
   }

   public void setUserSex(String userSex) {
       this.userSex = userSex;
   }

   public Date getUserBirthday() {
       return userBirthday;
   }

   public void setUserBirthday(Date userBirthday) {
       this.userBirthday = userBirthday;
   }

   @Override
   public String toString() {
       return "User{" +
               "userId=" + userId +
               ", userName='" + userName + '\'' +
               ", userAddress='" + userAddress + '\'' +
               ", userSex='" + userSex + '\'' +
               ", userBirthday=" + userBirthday +
               '}';
   }
}

  • IUserDao.java
  package com.itheima.dao;

import com.itheima.domain.User;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.FetchType;

import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
* 在mybatis中針對,CRUD一共有四個(gè)注解
*  @Select @Insert @Update @Delete
*/
public interface IUserDao {

   /**
    * 查詢所有用戶
    * @return
    */
   @Select("select * from user")
   @Results(id="userMap",value={
           @Result(id=true,column = "id",property = "userId"),
           @Result(column = "username",property = "userName"),
           @Result(column = "address",property = "userAddress"),
           @Result(column = "sex",property = "userSex"),
           @Result(column = "birthday",property = "userBirthday"),
   })
   List<User> findAll();

   /**
    * 根據(jù)id查詢用戶
    * @param userId
    * @return
    */
   @Select("select * from user  where id=#{id} ")
   @ResultMap("userMap")
   User findById(Integer userId);

   /**
    * 根據(jù)用戶名稱模糊查詢
    * @param username
    * @return
    */
   @Select("select * from user where username like #{username} ")
   @ResultMap("userMap")
   List<User> findUserByName(String username);


}

mybatis注解開發(fā)一對一的查詢配置

  • Account.java
 package com.itheima.domain;

import java.io.Serializable;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class Account implements Serializable {

   private Integer id;
   private Integer uid;
   private Double money;

   //多對一(mybatis中稱之為一對一)的映射:一個(gè)賬戶只能屬于一個(gè)用戶
   private User user;

   public User getUser() {
       return user;
   }

   public void setUser(User user) {
       this.user = user;
   }

   public Integer getId() {
       return id;
   }

   public void setId(Integer id) {
       this.id = id;
   }

   public Integer getUid() {
       return uid;
   }

   public void setUid(Integer uid) {
       this.uid = uid;
   }

   public Double getMoney() {
       return money;
   }

   public void setMoney(Double money) {
       this.money = money;
   }

   @Override
   public String toString() {
       return "Account{" +
               "id=" + id +
               ", uid=" + uid +
               ", money=" + money +
               '}';
   }
}

  • IAccountDao.java
  package com.itheima.dao;

import com.itheima.domain.Account;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.FetchType;

import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public interface IAccountDao {

   /**
    * 查詢所有賬戶誓沸,并且獲取每個(gè)賬戶所屬的用戶信息
    * @return
    */
   @Select("select * from account")
   @Results(id="accountMap",value = {
           @Result(id=true,column = "id",property = "id"),
           @Result(column = "uid",property = "uid"),
           @Result(column = "money",property = "money"),
           @Result(property = "user",column = "uid",one=@One(select="com.itheima.dao.IUserDao.findById",fetchType= FetchType.EAGER))
   })
   List<Account> findAll();

   /**
    * 根據(jù)用戶id查詢賬戶信息
    * @param userId
    * @return
    */
   @Select("select * from account where uid = #{userId}")
   List<Account> findAccountByUid(Integer userId);
}

mybatis注解開發(fā)一對多的查詢配置

  • User.java
  
   //一對多關(guān)系映射:一個(gè)用戶對應(yīng)多個(gè)賬戶
   private List<Account> accounts;

   public List<Account> getAccounts() {
       return accounts;
   }

   public void setAccounts(List<Account> accounts) {
       this.accounts = accounts;
   }
  • IUserDao.java
      /**
    * 查詢所有用戶
    * @return
    */
   @Select("select * from user")
   @Results(id="userMap",value={
           @Result(id=true,column = "id",property = "userId"),
           @Result(column = "username",property = "userName"),
           @Result(column = "address",property = "userAddress"),
           @Result(column = "sex",property = "userSex"),
           @Result(column = "birthday",property = "userBirthday"),
           @Result(property = "accounts",column = "id",
                   many = @Many(select = "com.itheima.dao.IAccountDao.findAccountByUid",
                               fetchType = FetchType.LAZY))
   })
   List<User> findAll();
  • IAccountDao.java
  package com.itheima.dao;

import com.itheima.domain.Account;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.FetchType;

import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public interface IAccountDao {

   /**
    * 查詢所有賬戶唉地,并且獲取每個(gè)賬戶所屬的用戶信息
    * @return
    */
   @Select("select * from account")
   @Results(id="accountMap",value = {
           @Result(id=true,column = "id",property = "id"),
           @Result(column = "uid",property = "uid"),
           @Result(column = "money",property = "money"),
           @Result(property = "user",column = "uid",one=@One(select="com.itheima.dao.IUserDao.findById",fetchType= FetchType.EAGER))
   })
   List<Account> findAll();

   /**
    * 根據(jù)用戶id查詢賬戶信息
    * @param userId
    * @return
    */
   @Select("select * from account where uid = #{userId}")
   List<Account> findAccountByUid(Integer userId);
}

  • AnnotationCRUDTest.java
  package com.itheima.test;

import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class AnnotationCRUDTest {
   private InputStream in;
   private SqlSessionFactory factory;
   private SqlSession session;
   private IUserDao userDao;

   @Before
   public  void init()throws Exception{
       in = Resources.getResourceAsStream("SqlMapConfig.xml");
       factory = new SqlSessionFactoryBuilder().build(in);
       session = factory.openSession();
       userDao = session.getMapper(IUserDao.class);
   }

   @After
   public  void destroy()throws  Exception{
       session.commit();
       session.close();
       in.close();
   }

   @Test
   public  void  testFindAll(){
       List<User> users = userDao.findAll();
//        for(User user : users){
//            System.out.println("---每個(gè)用戶的信息----");
//            System.out.println(user);
//            System.out.println(user.getAccounts());
//        }
   }

   @Test
   public void testFindOne(){
       User user = userDao.findById(57);
       System.out.println(user);
   }


   @Test
   public  void testFindByName(){
       List<User> users = userDao.findUserByName("%mybatis%");
       for(User user : users){
           System.out.println(user);
       }
   }


}

mybatis注解開發(fā)使用二級緩存

  • SecondLevelCatchTest.java
   package com.itheima.test;

import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;

/**
* @author 黑馬程序員
* @Company http://www.ithiema.com
*/
public class SecondLevelCatchTest {

   private InputStream in;
   private SqlSessionFactory factory;


   @Before
   public  void init()throws Exception{
       in = Resources.getResourceAsStream("SqlMapConfig.xml");
       factory = new SqlSessionFactoryBuilder().build(in);

   }

   @After
   public  void destroy()throws  Exception{

       in.close();
   }

   @Test
   public void testFindOne(){
       SqlSession session = factory.openSession();
       IUserDao userDao = session.getMapper(IUserDao.class);
       User user = userDao.findById(57);
       System.out.println(user);

       session.close();//釋放一級緩存

       SqlSession session1 = factory.openSession();//再次打開session
       IUserDao userDao1 = session1.getMapper(IUserDao.class);
       User user1 = userDao1.findById(57);
       System.out.println(user1);


       session1.close();

   }
}

  • IUserDao.java and SqlMapConfig.xml
 @CacheNamespace(blocking = true)
 public interface IUserDao {
    ***
 }



  <!--配置開啟二級緩存-->
   <settings>
       <setting name="cacheEnabled" value="true"/>
   </settings>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末随静,一起剝皮案震驚了整個(gè)濱河市囚戚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邀跃,老刑警劉巖螟深,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柔吼,死亡現(xiàn)場離奇詭異,居然都是意外死亡牺陶,警方通過查閱死者的電腦和手機(jī)伟阔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掰伸,“玉大人皱炉,你說我怎么就攤上這事〖罟ぃ” “怎么了娃承?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怕篷。 經(jīng)常有香客問我历筝,道長,這世上最難降的妖魔是什么廊谓? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任梳猪,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘春弥。我一直安慰自己呛哟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布匿沛。 她就那樣靜靜地躺著扫责,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逃呼。 梳的紋絲不亂的頭發(fā)上鳖孤,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機(jī)與錄音抡笼,去河邊找鬼苏揣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛推姻,可吹牛的內(nèi)容都是我干的平匈。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼藏古,長吁一口氣:“原來是場噩夢啊……” “哼增炭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起校翔,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤弟跑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后防症,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孟辑,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年蔫敲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饲嗽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奈嘿,死狀恐怖貌虾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裙犹,我是刑警寧澤尽狠,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站叶圃,受9級特大地震影響袄膏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掺冠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一沉馆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦斥黑、人聲如沸揖盘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兽狭。三九已至,卻和暖如春缨叫,著一層夾襖步出監(jiān)牢的瞬間椭符,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工耻姥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人有咨。 一個(gè)月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓琐簇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親座享。 傳聞我的和親對象是個(gè)殘疾皇子婉商,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1.Mybatis 延遲加載策略 問題:在一對多中,當(dāng)我們有一個(gè)用戶渣叛,該用戶有100個(gè)賬戶丈秩, ①在查詢用戶的時(shí)候,...
  • 1. 簡介 1.1 什么是 MyBatis 淳衙? MyBatis 是支持定制化 SQL蘑秽、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,535評論 0 4
  • 延遲加載和立即加載的概念 問題 :在一對多中,我們需要一個(gè)用戶箫攀,他有100個(gè)賬戶在查詢用戶的時(shí)候肠牲,要不要把關(guān)聯(lián)的賬...
    Deanfluenza01閱讀 191評論 0 0
  • 1.MyBatis簡述 mybatis是一個(gè)優(yōu)秀的基于 java 的持久層框架,它內(nèi)部封裝了 jdbc靴跛,使開發(fā)者只...
    測試員閱讀 23,201評論 1 18
  • “我在人民廣場吃著炸雞缀雳,而此時(shí)此刻你在哪里?” “你在人民廣場吃著炸雞梢睛?我在中山路口等公交肥印!” 沒錯(cuò),我堆砌這...
    陸星淵閱讀 457評論 0 1