日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mybatis-自定义类型处理器

發布時間:2024/10/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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語句

<?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},#{date})</insert><select id="findById" parameterType="int" resultType="user">select * from user where id=#{id}</select> </mapper>

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-自定义类型处理器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。