1、了解通用mapper
通用Mapper都可以極大的方便開發人員,可以隨意的按照自己的需要選擇通用方法,還可以很方便的開發自己的通用方法,極其方便的使用MyBatis單表的增刪改查,支持單表操作,不支持通用的多表聯合查詢,
2、通用mapper使用
1、 引入依賴
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
2、 spring集成
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<!--掃描所有dao介面的實作,加入到ioc容器中 -->
<property name="basePackage" value="cn.jiyun.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
3、物體類
通用mapper中,每個物體類,就對應一個表,通過使用一些注解(全部是JPA中的注解),可以關聯到每個欄位,具體使用demo如下:
| 注解 | 含義 | 使用 |
|---|---|---|
| @Table | 指定關聯的表,用在類上 | @Table(name=“表名”) 類名和表名默認對應規則為:駝峰轉下劃線 如果符合默認規則,此注解可以省略 |
| @Column | 指定列名,用在欄位上 | @Column(name = “欄位名稱”) 欄位名和列名默認對應規則為:駝峰轉下劃線 如果符合默認規則,此注解可以省略 |
| @Id | 標識欄位為主鍵,用在欄位上 | @Id,用在主鍵對應的欄位上即可,必填,可以有多個此注解,代表聯合主鍵 |
| @Transient | 標識此欄位不對應表中的列 | @Transient,用在物體類中自定義的額外欄位 不對應具體表中欄位,添加修改時會自動忽略 如果有自定義的額外欄位,此注解必填 |
| @GeneratedValue | 指定主鍵生成策略 | @GeneratedValue(generator = “JDBC”)資料庫自增ID,可以取出由資料庫內部生成的主鍵 @GeneratedValue(strategy = GenerationType.IDENTITY)資料庫自增ID,不能取回ID值 @GeneratedValue(generator = “UUID”),亂數ID |
@Table(name="dept")//對應資料庫表明dept2
public class Dept2{
@Id
private Integer id;
private String deptName;//對應資料庫欄位為:dept_name
private String deptcode;//默認對應資料庫欄位為:deptcode
}
4、dao層使用
繼承tk.mybatis.mapper.common.Mapper<T>,T對應泛型,就是物體類,代表要操作的表
public interface CountryMapper extend Mapper<Country2>{
//不用動也不用管,直接在service呼叫對應方法即可
}
5、 默認實作的方法
| 方法 | 說明 |
|---|---|
T selectByPrimaryKey(Object key); | 根據主鍵欄位進行查詢 方法引數必須包含完整的主鍵屬性 查詢條件使用等號 物體類必須有@Id注解標識,否則所有欄位都會作為查詢條件 |
List<T> select(T record); | 根據物體中的屬性值進行查詢 查詢條件使用等號 |
List<T> selectAll(); | 查詢全部結果,select(null)方法能達到同樣的效果 |
T selectOne(T record); | 根據物體中的屬性進行查詢 只能有一個回傳值,有多個結果是拋出例外,查詢條件使用等號 |
int selectCount(T record); | 根據物體中的屬性查詢總數 查詢條件使用等號 |
- 添加
| 方法 | 說明 |
|---|---|
int insert(T record); | 保存一個物體 null的屬性也會保存,不會使用資料庫默認值 |
int insertSelective(T record); | 保存一個物體 null的屬性不會保存,會使用資料庫默認值 |
- 修改
| 方法 | 說明 |
|---|---|
int updateByPrimaryKey(T record); | 根據主鍵更新物體全部欄位,null值會被更新 |
int updateByPrimaryKeySelective(T record); | 根據主鍵更新屬性不為null的值 |
- 洗掉
| 方法 | 說明 |
|---|---|
int delete(T record); | 根據物體屬性作為條件進行洗掉,查詢條件使用等號 |
int deleteByPrimaryKey(Object key); | 根據主鍵欄位進行洗掉,方法引數必須包含完整的主鍵屬性 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/248664.html
標籤:其他
下一篇:老鐵,就差你了
