文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mybatis TypeHandler注入spring依赖的方法是什么

2023-06-29 01:16

关注

这篇文章主要讲解了“mybatis TypeHandler注入spring依赖的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis TypeHandler注入spring依赖的方法是什么”吧!

TypeHandler注入spring的依赖

解决方法

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- .... -->        <property name="typeHandlers">          <array>            <bean class="com.example.YurCustomTypeHandler">              <property name="property" ref="bean"/>            </bean>          </array>        </property>    </bean>

在mybatis想通过写一个自定义的handler实现业务功能,该handler默认创建的时候,是不在spring的管理范围里的,所以你在handler用@Autowired注入,是会报npe。

需要通过上面的方式,就可以解决了。

mybatis扩展:自定义TypeHandler

在Mybatis中定义了很多默认的类型处理器,将sql语句中的值转化成JDBC的类型,以及将结果集中的值转化为字段类型的值,详情可见官网默认的TypeHandler,但是有的时候我们并不想用官网的TypeHandler的时候,自定义的TypeHandler就派上用场了

1、编写自定义TypeHandler

在自定义的类上加上@MappedJdbcTypes(JdbcType.VARCHAR)注解,括号里的JdbcType.Varchar是需要替代的

默认的JDBC类型,然后让这个类继承BaseHandler<String>,泛型类型String说明替代String类型,然后再重写的方法中

对只进行处理就行了,每个方法都必须返回值,如果没有返回的话,默认是不返回任何东西的,导致的结果就是,插入的值为null,获得的值也全部为null

package javaDIYFree.typeHandler;import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.MappedJdbcTypes;import sun.security.provider.MD5;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;@MappedJdbcTypes(JdbcType.VARCHAR)//需要替代的默认的JDBC类型,泛型类型String说明替代String类型public class VarcharTypeHandler extends BaseTypeHandler<String> {        @Override    public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {        //我在传进来的字符串后面加了一串字符串        preparedStatement.setString(i,s+">>>>>>>>>>>>>>>>");    }        @Override    public String getNullableResult(ResultSet resultSet, String s) throws SQLException {        return resultSet.getString(s);    }        @Override    public String getNullableResult(ResultSet resultSet, int i) throws SQLException {        return resultSet.getString(i);    }        @Override    public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {        return callableStatement.getString(i);    }}

2、配置TypeHandler

有两种方式配置,一种就是直接,再配置SqlSessionFactoryBean的时候,将自定义的TypeHandler配置进去,但是这种方式不常用,应为这就代表所有的Varchar的操作都是用自定义的TypeHandler了,一般我们只需要在某一个表的某一个字段进行自定义,这个时候就用第二种方式配置了

第一种配置方式

@Bean    public SqlSessionFactoryBean createSqlSessionFactoryBean(DruidDataSource druidDataSource){        final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();        try{            //配置数据源            sqlSessionFactoryBean.setDataSource(druidDataSource);            //配置mapper文件所在的位置            sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = MybatisConfig.class)public class UserMapperTest {    @Autowired    private UserMapper userMapper;    @Test        public void insertUser(){        User user = new User();        user.setUsername("zhangsan");        user.setPassword("123456");        userMapper.insert(user);    }    @Test        public void selectAllUser(){        userMapper.selectAll().forEach(new Consumer<User>() {            public void accept(User i) {                //打印用户名和密码                System.out.println(i.getUsername() +" ======> "+i.getPassword());            }        });    }}

4、项目结构图

mybatis TypeHandler注入spring依赖的方法是什么

感谢各位的阅读,以上就是“mybatis TypeHandler注入spring依赖的方法是什么”的内容了,经过本文的学习后,相信大家对mybatis TypeHandler注入spring依赖的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯