
<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[]就不会报错,这是为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)