-
使用 MyBatis 原生功能
我们使用 MyBatis-Flex 作为 MyBatis 的增强框架进行代码开发,并不会影响原有的 MyBatis 的任何功能。
-
使用 @Select 等 MyBatis 原生注解
MyBatis 提供了 @Insert 、@Delete 、@Update 、@Select 4 个注解,用于对 Mapper 的方法进行配置,用于原生编写原生 SQL 进行增删改查, 在 MyBatis-Flex 我们一样可以使用这些注解。例如:
java
public interface MyAccountMapper extends BaseMapper<Account> { @Select("select * from tb_account where id = #{id}") Account selectById(@Param("id") Object id);}
@Insert 、@Delete 、@Update 等注解也是一样的,也就是说,原有的 MyBatis 功能如何使用,在 MyBatis-Flex 就如何使用。
@InsertProvider、@DeleteProvider、@UpdateProvider、@SelectProvider 等还是和原生 MyBatis 一样的用法。
-
使用 xml 的方式
全称为Extensible Markup Language 可扩展标记语言。一般作为配置文件,可在网络中传输。
和html的区别是,它的语法规定更加严格,同时,xml中的标签都是自定义的,而html中的标签是预定义的。
xml一般用来存储数据,而html一般用来展示数据。
xml文档的第一行必须为形如<?xml 属性列表 ?>的文档声明。必须要有一个根标签,标签必须正确关闭。同时和html不同xml的标签区分大小写。属性值必须使用单双引号包裹。
配置完成后,我们就可以编写自己的 xml 和 mapper 代码了,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.test.mapper.StudentMapper">
<!--根据id查询-->
<select id="selectById" parameterType="java.lang.Integer" resultType="com.test.po.Student">
select * from student where id= #{id}
</select>
<!--登录-->
<select id="login" parameterType="java.lang.String" resultType="com.test.po.Student">
select * from student where username= #{username} and password = #{password}
</select>
<!-- 分页 -->
<select id="selectByName" resultType="com.test.po.Student">
select * from `student` ${qwSql} limit ${pageNumber}, ${pageSize}
</select>
<select id="selectByName_COUNT" resultType="long">
select count(*) from `student` ${qwSql}
</select>
</mapper>
public interface StudentMapper extends BaseMapper<Student> {
//根剧用户编号查询用户
Student selectById( Integer id);
//登录
Student login( String username, String password);
//分页
Page<Student> selectByName(Integer pageNumber, Integer pageSize);
Long selectByName_COUNT(QueryWrapper qwSql);
-
XML 分页
XML 分页是 MyBatis-Flex 在 v1.5.5 开始提供的一个 XML 分页解决方案,方便用户在使用 XML 时,对数据进行分页查询。
示例代码如下:
QueryWrapper qw = QueryWrapper.create()
.where(Student::getAge).eq(14)
.and(Student::getId).ge(1);
Page<Student> peoplePage = studentMapper
.xmlPaginate("selectByName", Page.of(1, 2), qw);
System.out.println(peoplePage);
XML 代码如下:
<!-- 分页 -->
<select id="selectByName" resultType="com.test.po.Student">
select * from `student` ${qwSql} limit ${pageNumber}, ${pageSize}
</select>
<select id="selectByName_COUNT" resultType="long">
select count(*) from `student` ${qwSql}
</select>
其执行的 SQL 如下:
sql
-- 查询数据量select count(*) from `student` WHERE `age` = 14 AND `id` >= 0-- 查询数据select * from `student` WHERE `age` = 14 AND `id` >= 0 limit 0, 10
-
功能
- 查询:
结果:
登入
结果:
分页查询
结果: