国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - mybatis學習筆記之mybatis注解配置詳解

mybatis學習筆記之mybatis注解配置詳解

2021-03-03 13:29御前兩把刀刀 Java教程

本篇文章主要介紹了mybatis學習筆記之mybatis注解配置詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Java API

既然你已經知道如何配置 MyBatis 和創建映射文件,你就已經準備好來提升技能了。 MyBatis 的 Java API 就是你收獲你所做的努力的地方。正如你即將看到的,和 JDBC 相比, MyBatis 很大程度簡化了你的代碼而且保持簡潔,很容易理解和維護。MyBatis 3 已經引入 了很多重要的改進來使得 SQL 映射更加優秀。

MyBatis 3構建在基于全面且強大的Java配置API上。該配置API是基于XML的MyBatis配置的基礎,也是新的基于注解配置的基礎。

注解提供了一種簡單的方式來實現簡單映射語句,而不會引入大量的開銷。

Mybatis常用注解對應的目標和標簽如表所示:

 

注解 目標 對應的XML標簽
@CacheNamespace <cache>
@CacheNamespaceRef <cacheRef>
@Results 方法 <resultMap>
@Result 方法

<result>

<id>
@One 方法 <association>
@Many   方法 <collection>

@Insert

@Update

@Delete
方法

<insert>

<update>

<delete>

@InsertProvider

@UpdateProvider

@DeleteProvider

@SelectProvider
方法

<insert>

<update>

<delete>

<select>

允許創建動態SQL
@Param  參數 N/A
@Options  方法 映射語句的屬性
@select 方法 <select>

 

Mybatis常用注解的含義:

@CacheNamespace(size = 512):定義在該命名空間內允許使用內置緩存

@Options(useCache = true, flushCache = false, timeout = 10000):一些查詢的選項開關

@Param("id"):全局限定別名,定義查詢參數在sql語句中的位置不再是順序下標0,1,2,3......的形式,而是對應名稱,該名稱在此處定義。 

@Results是以@Result為元素的數組,@Result表示單條屬性——字段的映射關系,id = true表示該id字段是主鍵,查詢時mybatis會給予必要的優化。數組中所有的@Result組成了單個記錄的映射關系,而@Results則是單個記錄的集合。另外,還有一個非常重要的注解@ResultMap,其與@Results類似

@Select("查詢語句")、@Insert("增加語句")、@Update("更新語句")和@Delete("刪除語句")表示對數據進行查詢、添加、更新和刪除的操作。

接下來,咱們來看一下注解的使用。

(1)   常規注解使用(不需要自定義map的操作):

示例1

?
1
2
3
4
5
6
7
8
9
//添加作者
@Insert("Insertinto Author(username,password,email,address,phone) " +
"values(#{username},#{password},#{email},#{address},#{phone})")
@Options(useGeneratedKeys=true,keyProperty="authId",flushCache= false, timeout = 10000)
public voidaddAuthor(Author author);
  //刪除作者
@Delete("deletefrom author where id = #{id}")
@Options(flushCache= false, timeout = 10000)
public voiddeleteAuthor(@Param("id") int id);

提示:  調用方法前需要注冊映射器:

?
1
sessionFactory.getConfiguration().addMapper(TestInteger.class);

或者在mapper.xml中配置<mapper class="映射器接口路徑"></mapper>

注冊之后再獲取mapper接口正常調用

(2)有需要自定義map的情況可以使用Results注解:

示例2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//查詢所有作者信息
@Select("select * from author")
@Options(flushCache = false, timeout = 10000,useCache=true)
@Results(
 value = {
  @Result(id=true,column="id",property="id"), 
@Result(property="username",column="username"), 
@Result(property="password",column="password"), 
@Result(property="email",column="email"),  
@Result(property="address",column="address"),
  @Result(property="phone",column="phone")
 }
)
public List<Author> findAuthors();
//查詢某作者信息
@Select("select * from author where id =#{id}")
@Options(flushCache = false, timeout =10000,useCache=true)
@Results(
 value = {@Result(id=true,column="id",property="id"),
   @Result(property="username",column="username"),
   @Result(property="password",column="password"), 
@Result(property="email",column="email"),
@Result(property="address",column="address"), 
@Result(property="phone",column="phone")
  }
)
public Author findAuthorById(@Param("id") intid);

如果多個查詢返回的結果集結構都一樣,可以使用@ResultMap定義返回結構,使用該注解,你將不得不在你的映射文件中配置你的resultMap,而@ResultMap(value = "名")即為映射文件中的resultMap ID,如此一來,你需要在<mapper>中注冊你的配置文件,在接口中使用@ResultMap來引用配置文件中的resultMap ID如下:

示例3

SelfMapper.xml

?
1
2
3
4
5
//每行記錄是一個hashmap
<resultMaptype="java.util.HashMap" id="selfMap">
  <resultproperty="n" column="city_name" />
      ...............
</resultMap>

SelfMapper.java:

?
1
2
3
@Select("select a.id,b.name,c.state from...........")
@ResultMap(value="selfMap")
public List<HashMap> sel();//注意,返回的是List集合

完整案例

接口代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.obtk.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.obtk.entitys.StudentEntity;
public interface IStudentDao {
 @Insert("insert into Student(stuName,gender,age,address,deptIdd)"+
   "values(#{stuName},#{gender},#{age},#{address},#{deptIdd})")
 @Options(useGeneratedKeys=true,keyProperty="stuId")
 int saveOne(StudentEntity stu);
  
 @Select("select * from Student where stuId=#{stuId}")
 @Results(
  //只要配置和列名不一致的屬性
  value={
   @Result(column="gender",property="sex")
  }
 )
 StudentEntity queryById(Integer stuId);
  
 @Select("select * from Student where gender=#{qqq} and address=#{area}")
 @Results(
  //只要配置和列名不一致的屬性
  value={
   @Result(column="gender",property="sex")
  }
 )
 List<StudentEntity> queryByMany(HashMap theMap);
  
 //萬能關聯注解配置
 @Select("select * from student s inner join department d"
   +" on s.deptIdd=d.deptId"
   +" where s.gender=#{sex}"
   +" and d.departName=#{deptName}")
 List<HashMap> queryByQnn(HashMap theMap);
  
}

案例1   查詢一個對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.obtk.test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.obtk.dao.IStudentDao;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
public class AnnoSelectOne {
 public static void main(String[] args) {
  SqlSession session=null;
  SqlSessionFactory factory=null;
  try {
   session=MybatisUtil.getSession();
   factory=MybatisUtil.getFactory();
   //把接口里面的sql配置和核心配置文件進行關聯
   factory.getConfiguration().addMapper(IStudentDao.class);
   IStudentDao stuDao=session.getMapper(IStudentDao.class);
   StudentEntity stu=stuDao.queryById(129);
   System.out.println(stu.getStuName()+","+stu.getSex()
     +","+stu.getAddress()+","+stu.getStuId());
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   MybatisUtil.closeSession();
  }
 }
}

案例2   傳遞多個參數,查詢多個對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.obtk.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.obtk.dao.IStudentDao;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
public class AnnoSelectMany {
 public static void main(String[] args) {
  SqlSession session=null;
  SqlSessionFactory factory=null;
  try {
   session=MybatisUtil.getSession();
   factory=MybatisUtil.getFactory();
   //把接口里面的sql配置和核心配置文件進行關聯
   factory.getConfiguration().addMapper(IStudentDao.class);
   IStudentDao stuDao=session.getMapper(IStudentDao.class);
   HashMap paramMap=new HashMap();
   paramMap.put("qqq", "男");
   paramMap.put("area", "學生宿舍");
   List<StudentEntity> stuList=stuDao.queryByMany(paramMap);
   for(StudentEntity stu :stuList){
    System.out.println(stu.getStuName()+","+stu.getSex()
      +","+stu.getAddress()+","+stu.getStuId());
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   MybatisUtil.closeSession();
  }
 }
}

案例3   添加對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.obtk.test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.obtk.dao.IStudentDao;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
public class AnnoSaveTest {
 public static void main(String[] args) {
  SqlSession session=null;
  SqlSessionFactory factory=null;
  try {
   session=MybatisUtil.getSession();
   factory=MybatisUtil.getFactory();
   //把接口里面的sql配置和核心配置文件進行關聯
   factory.getConfiguration().addMapper(IStudentDao.class);
   IStudentDao stuDao=session.getMapper(IStudentDao.class);
   StudentEntity stu=new StudentEntity("testC#",
     "男", 21, "冥王星");
   stu.setDeptIdd(10);
   int result=stuDao.saveOne(stu);
   session.commit();
   System.out.println("保存成功:"+stu.getStuId());
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   MybatisUtil.closeSession();
  }
 }
}

案例4    利用hashmap進行關聯查詢

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.obtk.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.obtk.dao.IStudentDao;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
 
public class AnnoJoinQnn {
 public static void main(String[] args) {
  SqlSession session=null;
  SqlSessionFactory factory=null;
  try {
   //4.得到session
   session=MybatisUtil.getSession();
   factory=MybatisUtil.getFactory();
   //把接口里面的sql配置和核心配置文件進行關聯
   factory.getConfiguration().addMapper(IStudentDao.class);
   IStudentDao stuDao=session.getMapper(IStudentDao.class);
   HashMap paramMap=new HashMap();
   paramMap.put("sex", "男");
   paramMap.put("deptName", "計算機系");
   //5.執行語句
   List<HashMap> stuList=stuDao.queryByQnn(paramMap);
   for(HashMap theObj : stuList){
    System.out.println(theObj.get("stuId")+","+theObj.get("gender")
      +","+theObj.get("stuName")+","+theObj.get("departName"));
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   MybatisUtil.closeSession();
  }
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/wx5040257/article/details/78768467

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲视频欧洲视频 | 欧美日韩亚洲另类 | 香蕉成人啪国产精品视频综合网 | 久久精品成人免费视频 | 一级黄色一级黄色 | 日韩视频精品 | 成人亚洲欧美 | 成人中文字幕在线观看 | av在线成人| 狠狠艹| 精品久久久久一区二区国产 | 久久久久久久久久久免费视频 | 亚洲美女在线视频 | 国产免费久久 | 欧美在线a | 国产精品美女久久久久av麻豆 | 久久专区 | 亚洲综合色自拍一区 | 久久久久国产一区二区三区 | 日韩免费在线观看视频 | 午夜影院在线 | 九九精品在线 | 国产乱码精品一区二区三 | 在线一区| 国产日韩精品在线观看 | 成人在线天堂 | 日韩在线观看一区 | 亚洲精品第一 | 亚洲一区二区三区免费看 | 色婷婷一区二区三区 | 中文字幕在线观看日本 | 午夜精品久久久久久久白皮肤 | 午夜在线观看影院 | 尤物网址 | 日韩成人在线视频 | 日韩精品一| av在线一区二区 | 欧美日韩亚洲国产精品 | 日韩在线| www久久精品 | 亚洲精品久久 |