spring笔记-mybatis标签

typeHandlers标签

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用
类型处理器将获取的值以合适的方式转换成 Java 类型。
除去默认的转换器也可以自定义自己的转化器

开发步骤:
① 定义转换类继承类BaseTypeHandler
② 覆盖4个未实现的方法,其中setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult
为查询时 mysql的字符串类型转换成 java的Type类型的方法
③ 在MyBatis核心配置文件中进行注册
④ 测试转换是否正确

public class DateTyHandler extends BaseTypeHandler<Date> {

//将java类型-> 数据库需要的类型
   @Override
   public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
       long time = date.getTime();
       preparedStatement.setLong(i,time);

   }
//数据库需要的类型 -> java类型
   /**
    *
    * @param resultSet 查询出的结果
    * @param s 进行装换的字段名称
    * @return
    * @throws SQLException
    */
   @Override
   public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
       //将之前的long型数据转为date类型
       long aLong = resultSet.getLong(s);
       Date date = new Date(aLong);
       return date;
   }
   //数据库需要的类型 -> java类型
   @Override
   public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
       long aLong = resultSet.getLong(i);
       Date date = new Date(aLong);
       return date;
   }
   //数据库需要的类型 -> java类型
   @Override
   public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
       long aLong = callableStatement.getLong(i);
       Date date = new Date(aLong);
       return date;
   }
}

注册类型处理器

<!--    自定义注册类型处理器-->
  <typeHandlers>
      <typeHandler handler="com.mybatisDemo.demo.handler.DateTyHandler"/>
  </typeHandlers>

plugins标签

MyBatis可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即
可获得分页的相关数据
开发步骤:
① 导入通用PageHelper的坐标
② 在mybatis核心配置文件中配置PageHelper插件
③ 测试分页数据获取

  • 导入通用PageHelper的坐标
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser -->
<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>3.1</version>
</dependency>
  • 在mybatis核心配置文件中配置PageHelper插件
<!--    分页助手插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--          插件版本5之后的可以自动识别  <property name="dialect" value="mysql"/>-->
        </plugin>
    </plugins>
  • 测试分页数据获取
public void test03() throws IOException {
    InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
    SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
    SqlSession session = build.openSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //设置分页参数
    PageHelper.startPage(1,3);
    List<User> users = mapper.findAll();
    System.out.println(users);
    session.close();
}

完整的xml配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.properties"/>
    <typeAliases >
        <typeAlias type="com.mybatisDemo.demo.domain.User" alias="user"/>
    </typeAliases>
<!--    自定义注册类型处理器-->
    <typeHandlers>
        <typeHandler handler="com.mybatisDemo.demo.handler.DateTyHandler"/>
    </typeHandlers>
<!--    分页助手插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--          插件版本5之后的可以自动识别  <property name="dialect" value="mysql"/>-->
        </plugin>
    </plugins>
    <environments default="environments">
        <environment id="environments">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>

</configuration>
posted @ 2022-02-17 14:02  EnkiZhang  阅读(30)  评论(0编辑  收藏  举报