wordpress建站用什么,做外贸主要看什么网站,高效的设计公司,长沙点梦网站建设Java 数据持久层框架#xff1a;认识 MyBatis 1.CRUD 注解2.映射注解3.高级注解3.1 高级注解3.2 MyBatis 3 注解的用法举例 MyBatis 和 JPA 一样#xff0c;也是一款优秀的 持久层框架#xff0c;它支持定制化 SQL、存储过程#xff0c;以及高级映射。它可以使用简单的 XML… Java 数据持久层框架认识 MyBatis 1.CRUD 注解2.映射注解3.高级注解3.1 高级注解3.2 MyBatis 3 注解的用法举例 MyBatis 和 JPA 一样也是一款优秀的 持久层框架它支持定制化 SQL、存储过程以及高级映射。它可以使用简单的 XML 或注解来配置和映射原生信息将接口和 Java 的 POJOsPlain Old Java Objects普通 Java 对象映射成数据库中的记录。
MyBatis 3 提供的注解可以取代 XML。例如使用注解 Select 直接编写 SQL 完成数据查询使用高级注解 SelectProvider 还可以编写动态 SQL以应对复杂的业务需求。
1.CRUD 注解
增加、删除、修改 和 查询 是主要的业务操作必须掌握这些基础注解的使用方法。MyBatis 提供的操作数据的基础注解有以下 4 个。
Select用于构建查询语句。lnsert用于构建添加语句。Update用于构建修改语句。Delete用于构建删除语句。
下面来看看它们具体如何使用见以下代码
Mapper
public interface UserMapper{Select(SELECT * FROM user WHERE id #{id})User queryById(Param(id) int id);Select(SELECT * FROM user)ListUser queryAll();Insert((INSERT INTO user(name,age) VALUES(#{name},#{age})))int add(User user);Delete(DELETE FROM user WHERE id #{id})int delById(int id);Update(UPDATE user SET name#{name},age#{age} WHERE id #{id})int updateById(User user);Select(SELECT * FROM user)PageUser getUserList();
}从上述代码可以看出首先要用 Mapper 注解来标注类把 UserMapper 这个 DAO 交给 Spring 管理。这样 Spring 会自动生成一个实现类不用再写 UserMapper 的映射文件了。最后使用基础的 CRUD 注解来添加要实现的功能。
2.映射注解
MyBatis 的映射注解用于建立实体和关系的映射。它有以下 3 个注解。
Results用于填写结果集的多个字段的映射关系。Result用于填写结果集的单个字段的映射关系。ResultMap: 根据 ID 关联 XML 里面的 resultMap。
可以在查询 SQL 的基础上指定返回的结果集的映射关系。其中property 表示实体对象的属性名column 表示对应的数据库字段名。使用方法见以下代码
Results({Result(property username, column USERNAME),Result(property password, column PASSWORD)
})
Select(select * from user)
ListUser list();3.高级注解
3.1 高级注解
MyBatis 3.x 版本主要提供了以下 4 个 CRUD 的高级注解。
SelectProvider用于构建动态查询 SQL。InsertProvider用于构建动态添加 SQL。UpdateProvider用于构建动态更新 SQL。DeleteProvider用于构建动态删除 SQL。
高级注解主要用于编写动态 SQL。这里以 SelectProvider 为例它主要包含两个注解属性 其中type 表示工具类method 表示工具类的某个方法用于返回具体的 SQL。
以下代码可以构建动态 SQL实现查询功能
Mapper
public interface UserMapper {SelectProvider(type UserSql.class, method listAll)ListUser listAllUser();
}UserSql 工具类的代码如下
public class UserSql {public String listAll() {return select * from user;}
}3.2 MyBatis 3 注解的用法举例
如果要查询所有的值则基础 CRUD 的代码是
Select(SELECT * FROM user3)
ListUser queryAll();也可以用映射注解来一一映射见以下代码
// 使用注解编写 SQL, 完成映射 Select(select * from user3)
Results({ Result(property id, column id),Result(property name, column name),Result(property age, column age)
})
ListUser listAll;如果要用多个参数进行查询则必须加上注解 Param否则无法使用 EL 表达式获取参数。
UserMapper 接口的写法如下
Select(select * from user where name like #{name} and age like #{age})
User getByNameAndAge(Param(name) String name, Param(age) int age);对应的控制器代码如下
RequestMapping(/querybynameandage)
User querybynameandage(String name, int age) {return userMapper.getByNameAndAge(name,age);
}还可以根据官方提供的 API 来编写动态 SQL
public String getUser(Param(name) String name, Param(age) int age) { return new SQL() {{SELECT(*);FROM(user3);if (name ! null age ! 0) {WHERE(name like #{name} and age like #{age})} else {WHERE(12);}}}.toString();
}