唐山玉田网站建设,建盏大师排名与落款,世界著名建筑设计公司,常州网站建设团队文章目录 注解实现简单增删改查SQL 语句构建器SelectProvider举例 注解实现简单增删改查
在 MyBatis 的核心配置文件中#xff0c;你需要配置的不是 mapper 映射文件#xff0c;而是 Mapper 接口所在的包路径。
!-- 在配置文件中 关联包下的 接口类--
mappersSelectProvider举例 注解实现简单增删改查
在 MyBatis 的核心配置文件中你需要配置的不是 mapper 映射文件而是 Mapper 接口所在的包路径。
!-- 在配置文件中 关联包下的 接口类--
mapperspackage namecom.example.dao/
/mappers另外我们也不再需要 mapper 映射文件。对于 DAO 中的方法所对应的 SQL 语句我们直接以注解的形式标注在方法上。
public interface DepartmentMapper {Select(select * from dept where deptno #{id})Department selectByPK(int id);Select(select * from dept)ListDepartment select();Delete(delete from dept where deptno #{id})int delete(int id);Insert(insert into dept values(NULL, #{name}, #{location}))Options(useGeneratedKeys true, keyProperty id, keyColumn deptno)int insert(Department dept);
}上述代码中的注解很好理解。唯一需要注意的是如果在执行 insert 语句时需要启用 MyBatis 的「主键回填」功能需要多使用一个 Options 注解。
其实上面的接口的定义中所使用的注解的作用显而易见本质上就是把你曾经写在 XML 配置文件中的 SQL 语句「搬」到了 Java 代码中。
SQL 语句构建器
SelectProvider举例
SelectProvider 功能就是用来单独写一个类与方法用来提供一些 XML 或者注解中不好写的 SQL 。
写一个简单的 SelectProvider 的用法
先在DepartmentMapper/DepartmentDao 中写一个接口配上注解。
SelectProvider(type MySelectSqlProvider.class, method selectByPK)
Department selectDepartmentByPK(long id);新建MySelectSqlProvider类添加selectByPK方法这个方法返回你「心里想要」执行的 SQL 语句
public class MySelectSqlProvider {public String selectByPK(Long id) {return SELECT * FROM department where id id;}
}我们在这里直接返回了一个 String当然你开可以用 StringBuffer 对象来拼接一个 SQL 语句这样可读性更好一些。
public class MySelectSqlProvider {public String selectByPK(Param(id) Long id, Param(name) String name){StringBuffer sql new StringBuffer();sql.append( SELECT * FROM department where id #{id});sql.append( and name #{name} );return sql.toString();}
}更多、更优雅的写法是通过 MyBatis 中的 SQL 工具类SQL Builder 工具类已被淘汰的拼接一个 SQL 语句。SQL 工具类的写法在Mybatis官网-SQL 语句构建器 。
最后在Service中调用Mapper方法即可 [!attention] 注意 在使用 SelectProvider 时我们在 XML 中没有对应的 SQL甚至 myabtis 甚至都不知道有 XML 配置文件的存在因为我们在核心配置文件中映射的是 dao 接口所在的包而不是 Mapper.xml 配置文件而且我们在接口的查询方法上也没有 Select 注解修饰只有 SelectProvider 注解SelectProvider 中两个属性type 为提供 SQL 语句字符串的类method 指定提供 SQL 语句字符串的具体方法。 另外除了有 SelectProvider 之外还有 InsertProvider 、UpdateProvider 、DeleteProvider 。