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、 默認實現的方法
查詢
// 根據實體中的屬性值進行查詢查詢條件使用等號
public List<Hobby> findHobby(Hobby t) throws Exception {
return hobbyMapper.select(t);
}
// 查詢所有
public List<Hobby> findHobby() throws Exception {
return hobbyMapper.selectAll();
}
添加
//保存一個實體<br>null的屬性也會保存,不會使用數據庫默認值
public void addUser(User t) throws Exception {
userMapper.insert(t);
};
刪除
// 根據主鍵字段進行刪除,方法參數必須包含完整的主鍵屬性
public void deleteUser(Integer id) throws Exception {
userMapper.deleteByPrimaryKey(id);
};
修改
// 根據主鍵更新屬性不爲null的值
public void updateUser(User t) throws Exception {
userMapper.updateByPrimaryKeySelective(t);
};