Mybatis-自定义类型处理器
生活随笔
收集整理的這篇文章主要介紹了
Mybatis-自定义类型处理器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
類型轉換器:mybatis中有一些常用的類型轉換器,比如把Java中的short類型轉換為mysql中的short類型;但是如果現在是Java中的Date類型,但是我想要存儲到數據庫中轉換為Long類型的毫秒值(默認1970-00-00-00至今),就需要自己定義轉換器
1.創建實體類User
public class User {private int id;private String username;private String password;private Date birthday;public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", birthday=" + birthday +'}';} }2.編寫UserMapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hao.mapper.UserMapper"><insert id="save" parameterType="user">insert into user values(#{id},#{username},#{password},#{birthday})</insert> </mapper>3.編寫SqlMapConfig.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> <!-- 加載jdbc.properties配置文件--><properties resource="jdbc.properties"/><!-- 定義別名--><typeAliases><typeAlias type="com.hao.domain.User" alias="user"/></typeAliases><!-- 注冊類型處理器--><typeHandlers><typeHandler handler="com.hao.handler.DateTypeHandler"/></typeHandlers><!-- 配置數據源環境--><environments default="development"><!-- 表示默認情況下使用id為development的環境--><environment id="development"><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="com/hao/mapper/UserMapper.xml"/></mappers> </configuration>4.自定義類型處理器(必須實現BaseTypeHandler類,泛型中的Date就是要轉換的Java類型),實現其中的四個方法
public class DateTypeHandler extends BaseTypeHandler<Date> {//將java類型轉換為數據庫需要的類型@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {long time = date.getTime();preparedStatement.setLong(i,time);}//將數據庫中的類型轉化為Java類型//String:要轉換的字段的名稱//ResultSet:查詢的結果集@Overridepublic Date getNullableResult(ResultSet resultSet, String s) throws SQLException {//獲取結果集中需要的數據(long)轉換成Date類型long aLong = resultSet.getLong(s);Date date = new Date(aLong);return date;}@Overridepublic Date getNullableResult(ResultSet resultSet, int i) throws SQLException {long aLong = resultSet.getLong(i);Date date = new Date(aLong);return date;}@Overridepublic Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {long aLong = callableStatement.getLong(i);Date date = new Date(aLong);return date;} }5.測試
public class MapperTest {@Testpublic void test1() throws IOException {InputStream stream = Resources.getResourceAsStream("SqlMapConfig.xml");SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = new User();user.setUsername("ceshi");user.setPassword("abc");user.setDate(new Date());//執行保存mapper.save(user);sqlSession.commit();} }6.結果
7.從數據庫中讀取出來
在UserMapper中添加查詢sql語句
8.測試
public class MapperTest {@Testpublic void test1() throws IOException {InputStream stream = Resources.getResourceAsStream("SqlMapConfig.xml");SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.findById(8);System.out.println(user.getBirthday());} }9.結果
總結
以上是生活随笔為你收集整理的Mybatis-自定义类型处理器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis-sql语句的抽取
- 下一篇: Mybatis-plugins分页助手实