BaseTypeHandler转换--学习笔记

mybati类型转化

mybatisxml文件配置
//

<typeAliases>
    <!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名
    <typeAliase type="com.mybatis.demo.Entity.User" alias="UserBean"/> -->
    <!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
    <!--<package name="com.mybatis.demo.Entity"/>
    <typeAlias alias="User" type="Role"/>-->
</typeAliases>

<typeHandlers>
    <typeHandler handler="typer.dateTyper.DateTyperHeader"/>
</typeHandlers>

<!-- 配置mybatis运行环境 -->
<environments default="development">
    <environment id="development">
        <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
        <transactionManager type="JDBC"/>

        <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
        <!-- POOLED 表示支持JDBC数据源连接池 -->
        <!-- UNPOOLED 表示不支持数据源连接池 -->
        <!-- JNDI 表示支持外部数据源连接池 -->
        <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.databaseurl}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </dataSource>
    </environment>
</environments>


<mappers>
    <!-- 映射文件方式1,一个一个的配置-->
    <mapper resource="RoleMapper.xml"/>
    <!-- 映射文件方式2,自动扫描包内的Mapper接口与配置文件
   <package name="ssm.mapper"/> -->
</mappers>

映射文件RoleMapper.xml配置

<select id="get_info"  resultMap="rolemap">
    select *from `behavior`
    <where>
        <if test="id!=0">
            and id=#{id}
        </if>
        <if test="rolename!=null">
            and role_name=#{rolename}
        </if>
        <if test="note!=null">
            and note=#{note}
        </if>
    </where>
</select>

<select id="find_info" parameterType="int" resultType="Role">
    select id,role_name as rolename,date,note from `behavior` where id=#{id}

</select>
<insert id="insert_talbe" parameterType="Role">
    insert into behavior(id,role_name,date,note) values(#{id},#{rolename},#{date},#{note})
</insert>
pojo类
import java.util.Date;

public class Role {
    private int id;
    private String  rolename;
    private String note;
    private Date date;

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public int getId() {
        return id;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", rolename='" + rolename + '\'' +
                ", note='" + note + '\'' +
                ", date=" + date +
                '}';
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getRolename() {
        return rolename;
    }

    public void setRolename(String rolename) {
        this.rolename = rolename;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }
}

mapper接口

public interface Rolempper {

   public List<Role> get_info(int id) throws Exception;
   public  Role find_info(int id);
   public int insert_talbe(Role role);

}

通过继承BaseTypeHandler类进行转换

public class DateTyperHeader extends BaseTypeHandler <Date>{

//javaType转换为jdbcType
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        //将Date类型转换为long类型存储在数据库中
        long time= date.getTime();
        preparedStatement.setLong(i,time);
    }
//剩下三个是jdbcType转换为javaType
    @Override
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        //将long类转化为Date类型
        long along=resultSet.getLong(s);
        Date date=new Date(along);
        return date;
    }

    @Override
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        long along=resultSet.getLong(i);
        Date date=new Date(along);
        return date;
}

    @Override
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        long along=callableStatement.getLong(i);
        Date date=new Date(along);
        return date;

    }
}

在这里插入图片描述数据库储存图片
实现类

   InputStream reader = Resources.getResourceAsStream( "mybatis_cfg.xml");
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

        SqlSession session= sessionFactory.openSession();
        Rolempper mapper=session.getMapper(Rolempper.class);
        RowBounds rowBounds=new RowBounds(0,5);
        //Role user=mapper.get_info(1);

        Role u=new Role();
        u.setId(5);
        u.setRolename("lee_1");
        u.setNote("note_test");
        u.setDate(new Date());
        Role user= mapper.find_info(4);
       // int i=mapper.insert_talbe(u);

        System.out.println(user.getDate());
        session.commit();

在这里插入图片描述最后的打印结果,数据库中存储的是为long类型的毫秒值,而编译器打印的是是具体时间,转换成功

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值