JavaMapper是一款基於MyBatis的ORM框架,主要用於簡化數據源的操作。本篇文章將從多個方面對JavaMapper進行詳細闡述,為讀者解析其核心特性和使用方法。
一、快速入門
JavaMapper主要提供了兩個核心接口:Mapper和MapperFactory。Mapper是抽象的Mapper接口,表徵着對數據源的操作。MapperFactory是Mapper的生產工廠,用於創建Mapper實例。
public interface Mapper<T> {
T getById(Long id);
List<T> getAll();
void insert(T entity);
void update(T entity);
void deleteById(Long id);
}
public interface MapperFactory {
<T> Mapper<T> create(Class<T> entityType);
}
定義一個簡單的實體類:
public class User {
private Long id;
private String name;
private Integer age;
// getter and setter methods
}
使用JavaMapper對User進行操作:
MapperFactory mapperFactory = new DefaultMapperFactory();
Mapper<User> userMapper = mapperFactory.create(User.class);
// 插入數據
User user = new User();
user.setName("John");
user.setAge(20);
userMapper.insert(user);
// 更新數據
user.setAge(21);
userMapper.update(user);
// 查詢數據
List<User> users = userMapper.getAll();
// 刪除數據
userMapper.deleteById(user.getId());
二、註解方式
除了使用Mapper接口的方式,JavaMapper還支持使用註解的方式進行操作。只需要在實體類上標註@Table、@Column、@PrimaryKey註解,Mapper接口中使用@Select、@Insert、@Update、@Delete等註解即可。下面是一個示例:
@Table(name = "tb_user")
public class User {
@PrimaryKey
private Long id;
@Column(name = "user_name")
private String name;
@Column
private Integer age;
// getter and setter methods
}
public interface UserMapper extends Mapper<User> {
@Select("SELECT * FROM tb_user WHERE user_name = #{name}")
List<User> findByName(String name);
@Delete("DELETE FROM tb_user WHERE age > #{age}")
void deleteByAge(Integer age);
}
// 使用
MapperFactory mapperFactory = new DefaultMapperFactory();
UserMapper userMapper = mapperFactory.create(UserMapper.class);
List<User> users = userMapper.findByName("John");
userMapper.deleteByAge(20);
三、高級查詢
JavaMapper支持MyBatis的動態SQL功能,可以進行高級的數據查詢操作。例如,構造一個動態查詢條件:
public class UserQuery {
private String name;
private Integer minAge;
private Integer maxAge;
// getter and setter methods
}
public interface UserMapper extends Mapper<User> {
@Select("<script>SELECT * FROM tb_user WHERE 1=1 "
+ "<if test='name != null'> AND user_name = #{name} </if>"
+ "<if test='minAge != null'> AND age >= #{minAge} </if>"
+ "<if test='maxAge != null'> AND age <= #{maxAge} </if>"
+ "</script>")
List<User> findByQuery(UserQuery query);
}
// 使用
UserQuery query = new UserQuery();
query.setName("John");
query.setMinAge(20);
query.setMaxAge(25);
List<User> users = userMapper.findByQuery(query);
四、多數據源支持
JavaMapper支持多數據源操作,只需要在創建MapperFactory時指定數據源即可。例如,使用Druid數據源配置:
public class DataSourceUtil {
public static DataSource getDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
}
// 數據源1
DataSource dataSource1 = DataSourceUtil.getDataSource();
MapperFactory mapperFactory1 = new DefaultMapperFactory(dataSource1);
UserMapper userMapper1 = mapperFactory1.create(UserMapper.class);
// 數據源2
DataSource dataSource2 = DataSourceUtil.getDataSource();
MapperFactory mapperFactory2 = new DefaultMapperFactory(dataSource2);
UserMapper userMapper2 = mapperFactory2.create(UserMapper.class);
JavaMapper提供了豐富的API和快速便捷的操作方式,可以幫助開發者簡化數據源的操作,提高開發效率。希望本篇文章的介紹能給有需要的開發者提供幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/293745.html
微信掃一掃
支付寶掃一掃