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类型的毫秒值,而编译器打印的是是具体时间,转换成功