>### 1.屬性名和數據庫中的列名不同時,可以使用別名查詢
~~~
例如列名是name 而屬性名是e_name
<select id="getAllEmp" resultType="cn.li.pojo.Employee">
select id,name e_name,gender,address from employee
</select>
~~~
>#### 屬性名和數據庫中的列名不同時或者另一種方法:
~~~
<!-- 自定義封裝規則 。resultMap="" column 表示數據庫中查詢的字段名稱 。 -->
<resultMap type="cn.li.pojo.Employee" id="rm2">
<!-- 使用id標簽 來指定主鍵的封裝規則 ,mybatis會做優化 。 -->
<id column="id" property="id"></id>
<result column="name" property="e_name" />
<result column="gender" property="gender" />
<result column="address" property="address" />
</resultMap>
<select id="getAllEmp2" resultMap="rm2">
select id,name,gender,address from employee
</select>
~~~
>### 2.級聯封裝
~~~
<resultMap type="cn.li.pojo.Employee" id="rm3">
<id column="id" property="id" />
<result column="name" property="e_name" />
<result column="gender" property="gender" />
<result column="address" property="address" />
<result column="d_id" property="dept.dId" />
<result column="d_name" property="dept.dName" />
</resultMap>
<select id="sel1" resultMap="rm3">
select e.*,d.* from employee e left
join department d on e.d_id=d.d_id
</select>
~~~
>### 3.使用聯合標簽配置,添加property,javaType屬性
~~~
<resultMap type="cn.li.pojo.Employee" id="rm4">
<id column="id" property="id" />
<result column="name" property="e_name" />
<result column="gender" property="gender" />
<result column="address" property="address" />
<!-- 聯合 。 association 指向的是 實體類中的那個屬性 需要做聯合 配置。 -->
<association property="dept" javaType="cn.li.pojo.Department">
<id column="d_id" property="dId" />
<result column="d_name" property="dName" />
</association>
</resultMap>
<select id="sel2" resultMap="rm4">
select e.*,d.* from employee e left
join department d on e.d_id=d.d_id
</select>
public class Employee{
...
private Department dept;
....
}
~~~
>### 4.分步查詢&延遲加載
~~~
<!-- com/igeek/pojo/EmployeeMapper.xml 分布查詢 。。。 1.知道員工的id ,根據員工的id能拿到部門id . 2.再根據得到部門id,去查詢部門所有信息。 -->
<resultMap type="cn.li.pojo.Employee" id="selStep">
<id column="id" property="id" />
<result column="name" property="e_name" />
<result column="gender" property="gender" />
<result column="address" property="address" />
<!--
association 聯合
property 要為實體類中的哪一個屬性進行賦值。
select 表示當前的這個屬性值 是通過查詢拿到的 。(通過那個命名空間下的那一個標簽去做查詢 。)
column 表示 第一次查詢的哪一個列的結果作為參數傳遞給你第二次要調用的方法。
步驟1 : id name gender address d_id
1 張全蛋 1 暴走大事件 ( 1 )
步驟2 : d_id dId,d_name dName
( 1 ) 開發 。
多個參數的分步查詢 。
#{id},#{name},#{age}
column="{name=d_name,id=d_id}";
只有分步查詢可以做延遲加載 懶加載 按需加載 。
-->
<!-- select部門映射文件的namespace.標簽id -->
<association property="dept"
select="cn.li.dao.DepartmentDao.selDepartmentByID"
column="d_id"><!-- column表示將查詢中那一列的結果作為參數傳遞給另外一個查詢 -->
</association>
</resultMap>
<select id="sel3" resultMap="selStep">
select * from employee where id=#{id}
</select>
//DepartmentMapper.xml文件里的內容
<select id="selDepartmentByID" resultType="cn.li.pojo.Department">
select d_id dId,d_name dName from department where d_id=#{id}
</select>
//開啟延遲加載 只需要在配置文件中進行全局配置(兩個值。)
//延遲加載,又叫懶加載,按需加載 lazyLoadingEnable設置為true ,aggressiveLazyLoading 設置為false
~~~
開啟懶加載步驟:
1.導入三個jar包

2.在全局配置文件里配置 也就是config.xml文件里
~~~
<settings>
<setting name="lazyLoadingEnabled" value="true"></setting>
<setting name="aggressiveLazyLoading" value="false"></setting>
</settings>
~~~
>### 5.使用collection查詢
~~~
//一對多 查詢部門下的所有的員工信息。
<resultMap type="cn.li.pojo.Department" id="selMap2">
<id column="d_id" property="dId"/>
<result column="d_name" property="dName"/>
<!--
collection定義關聯集合類型的屬性的封裝規則
ofType:指定集合里面元素的類型
-->
<collection property="emps" ofType="cn.li.pojo.Employee">
<id column="id" property="id"/>
<result column="name" property="e_name"/>
<result column="gender" property="gender"/>
<result column="address" property="address"/>
</collection>
</resultMap>
<select id="selDep" resultMap="selMap2">
select e.*,d.* from employee e left join department d on e.d_id=d.d_id where d.d_id=#{id}
</select>
public class Department{
...
private List<Employee> emps;
...
}
~~~
~~~
- spring
- 1.spring第一天
- 1.1 安裝spring插件(spring tool suite)
- 1.2 spring概述
- 1.3 控制反轉&依賴注入
- 1.4 springIOC容器
- 1.5 依賴注入的四種方式
- 1.6 配置bean的細節
- 1.7 bean之間的關系
- 1.8 bean作用域
- 1.9 補充:創建對象的幾種方法
- 1源代碼位置
- 2.spring第二天
- 2.1 使用外部屬性文件
- 2.2 spEL
- 2.3 bean的生命周期
- 2.4 通過工廠方式配置bean
- 2.5 基于注解的方式配置bean
- 2.6 組件裝配
- 2.7 靜態代理
- 2.8 動態代理
- 2.9 Cglib代理
- 2源代碼位置
- 3. spring第三天
- 3.1 springAOP
- 3.1.1 AOP簡介
- 3.1.2 為什么使用AOP
- 3.1.3 AOP關鍵術語
- 3.1.4 AOP圖解
- 3.1.5 springAOP實現步驟
- 3.1.6 SpringAOP實現原理:
- 3.1.7 AOP的好處
- 3.1.8 AOP在實際項目中的主要應用
- 3代碼地址
- 3.1.9 純注解版配置aop的方式
- 3.2 maven環境搭建
- 附IDEA激活碼
- 4. spring第四天
- 4.1 c3p0事務
- 4.2 命令窗口事務
- 4.3 c3p0連接池設置
- 4.4 事務中的一些基本概念
- 4.5 事務的傳播行為
- 4.6 自定義異常
- 4.7 spring整合Junit單元測試
- 4.8 JdbcTemplate(附源代碼)
- 事務源代碼
- 4.9 純注解tx
- 4.10 基于xml配置事務
- 0. jsp頁面修改編碼方式
- 0.1 eclipse配置tomcat
- 0.單例模式-飽漢模式
- 0.單例模式-饑漢模式
- springMVC
- 1. springmvc第一天
- 1.1 springMVC概述
- 1.2 springmvc框架搭建及第一個應用程序
- 1.3 @RequestMapping
- 1.4 RequestMapping修飾類
- 1.5 RequestMapping精準化映射
- 1.6 Ant風格URL
- 1.7 帶有占位符的url映射
- 1.8 REST風格
- 1.9 RequerstParam獲取請求正文
- 2. springmvc第二天
- 2.1 優化
- 2.2 POJO綁定請求參數
- 2.3 RequestHeader獲取請求報頭信息
- 2.4 CookieValue獲取Cookie信息
- 2.5 獲取原生ServletAPI
- 2.6 ModelAndView處理模型數據
- 2.7 Map、Model、ModelMap處理模型數據
- 2.8 @SessionAttributes注解
- 2.9 @ModelAttribute無返回值方法及方法入參
- 2.10 @ModelAttribute修飾有返回值類型的方法
- 代碼地址
- 3. springmvc補充
- 3-1 springmvc工作原理
- 3-2 springmvc form表單提交中文亂碼
- 3-3 數據的格式化
- 3-4 自定義類型轉換器
- 3-5 其他知識點
- 3-6 crud代碼
- 3-7 @DateTimeFormat日期格式化
- 3-8 數據驗證的概念及JSR303驗證
- 3-9 Hibernate-Validator驗證框架
- 3-10 Controller捕獲錯誤消息
- 3-11 errors標簽在頁面中獲取錯誤消息
- 3-12 錯誤消息的定制及國際化
- 3-13 自定義攔截器
- 3-14 Java代碼中獲取國際化信息
- 3-15 超級鏈接設置國際化
- 3-16 AJAX支持之@RequestBody
- mybatis
- 1. mybatis第一天
- 1. 為什么使用mybatis
- 2. 下載地址
- 3. hello
- 4. mybatis三種開發模式
- 5. 全局配屬屬性內容
- 6. DTD設置
- 7. Mapper中的CRUD
- 8. 8.mybatis使用主鍵自增
- 9. #{}中的參數處理
- 10. #{}與${}區別
- 11. 集合數據的查詢
- 12 動態sql
- 12.1 if
- 12.2 choose, when, otherwise
- 12.3 trim, where, set
- 12.4 foreach
- 代碼位置
- 2. mybatis第二天
- 1.封裝map類型的數據
- 2. resultMap自定義封裝規則
- 0代碼位置
- 3. mybatis緩存機制
- ssm整合
- 1.maven
- 2.ssm基礎環境搭建
- 2-1 引入項目依賴的jar包
- 2-2 引入bootstrap,jquery
- 2-3 創建項目包結構
- 2-4 編寫web.xml配置文件
- 2-5 編寫sping,springmvc,mybatis配置文件
- 2-6 逆向工程mbg.xml
- shiro安全框架
- 1.shiro簡介
- 易購Buy商城
- 第一天
- 1.課程計劃
- 2.電商行業背景
- 3.易購Buy介紹
- 4.易購Buy架構
- 5.工程搭建
- 6.工程啟動和測試
- 7.ssm框架整合
- 8.整合測試
- 9.svn
- 9.1 svn服務端
- 9.2 svn客戶端
- 第二天
- 1.SOA架構分析
- 2.dubbo使用方法
- 3.注冊中心
- 4.工程改造
- 5.easyUI
- maven
- 1.maven介紹
- 2.idea配置maven和服務器
- 3.創建web工程
- 4.分模塊構建工程
- 5. 代碼位置
- 6. nexus
- Luence搜索
- 1.了解搜索技術
- 2.Lucene的基本使用
- solr
- SolrCloud