请教Mybatis中如何在程序中获取Mapper中定义的SQL语句

请教Mybatis中如何在程序中获取Mapper中定义的SQL语句,第1张

<mapper namespace="AccountMapper">

    <update id="updateLoginTime" parameterType="int">

    <![CDATA[

     update sys_account set login_date = now(), updatedate = now() where id = #{accountId}

    ]]>

    </update>

</mapper>

举例如上面的xml定义的Mapper,在代码中可以通过AccountMapperupdateLoginTime获取到update sys_account set login_date = now(), updatedate = now() where id = #{accountId}这行sql

MyBatis提供了orgapacheibatistypeBaseTypeHandler类用于我们自己扩展类型转换器,上面的EnumTypeHandler和EnumOrdinalTypeHandler也都实现了这个接口。

1 定义接口

我们需要一个接口来确定某部分枚举类的行为。如下:

public interface BaseCodeEnum {

int getCode();

}

该接口只有一个返回编码的方法,返回值将被存入数据库。

2 改造枚举

就拿上面的ComputerState来实现BaseCodeEnum接口:

public enum ComputerState implements BaseCodeEnum{

OPEN(10), //开启

CLOSE(11), //关闭

OFF_LINE(12), //离线

FAULT(200), //故障

UNKNOWN(255); //未知

private int code;

ComputerState(int code) { thiscode = code; }

@Override

public int getCode() { return thiscode; }

}

3 编写一个转换工具类

现在我们能顺利的将枚举转换为某个数值了,还需要一个工具将数值转换为枚举实例。

public class CodeEnumUtil {

public static <E extends Enum<> & BaseCodeEnum> E codeOf(Class<E> enumClass, int code) {

E[] enumConstants = enumClassgetEnumConstants();

for (E e : enumConstants) {

if (egetCode() == code)

return e;

}

return null;

}

}

4 自定义类型转换器

准备工作做的差不多了,是时候开始编写转换器了。

BaseTypeHandler<T> 一共需要实现4个方法:

void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType)

用于定义设置参数时,该如何把Java类型的参数转换为对应的数据库类型

T getNullableResult(ResultSet rs, String columnName)

用于定义通过字段名称获取字段数据时,如何把数据库类型转换为对应的Java类型

T getNullableResult(ResultSet rs, int columnIndex)

用于定义通过字段索引获取字段数据时,如何把数据库类型转换为对应的Java类型

T getNullableResult(CallableStatement cs, int columnIndex)

用定义调用存储过程后,如何把数据库类型转换为对应的Java类型

你这个错误是未找到类异常,说明它的上面下面应该还存在报错代码,

一般找java错误,人家代码是没错的,你需要找到你这个错误是由你的哪行代码引起的,进行修改;如果真的是人家代码有问题,你就只能请教大神了,要么就别用

未找到类异常我感觉可能有以下几个方面:

类未引入

同类名java类太多,引入不明确

其他,遇见再说

在mybatis调用分页查询语句之前调用jar和插件配置程序,PageHelperstartPage会返回一个page对象,此对象在查询结果出来后会把总页数给page对象,即可实现分页查询功能,求出总页数。

MyBatis支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs,Plain Ordinary Java Object,普通的Java对象映射成数据库中的记录。

一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。

扩展资料:

MyBatis的特点:

1、简单易学

本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现

2、灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足 *** 作数据库的所有需求。

3、解除sql与程序代码的耦合

通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

参考资料来源:百度百科—MyBatis

以上就是关于请教Mybatis中如何在程序中获取Mapper中定义的SQL语句全部的内容,包括:请教Mybatis中如何在程序中获取Mapper中定义的SQL语句、如何在MyBatis中优雅的使用枚举、Mybatis的parameterType的值是String[]会报错,而值如果是int[]就不会报错,这是为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9752648.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存