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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

04.MyBatis别名的设置和类型转换器

發(fā)布時(shí)間:2024/7/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 04.MyBatis别名的设置和类型转换器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

別名的設(shè)置:(別名不區(qū)分大小寫):

設(shè)置單個(gè)別名:

<configuration><properties resource="db.properties" /><typeAliases><!-- 設(shè)置單個(gè)別名 --><typeAlias type="com.offcn.entity.Person" alias="person"/><typeAlias type="com.offcn.entity.Book" alias="book"/></typeAliases>

映射文件中直接寫別名即可:

<select id="queryPersonById" parameterType="int" resultType="person">select * from person where id = #{id} </select>

批量設(shè)置別名:

<typeAliases><!-- 批量定義別名 ,別名不區(qū)分大小寫,會(huì)將該包下的所有文件批量設(shè)置別名--><package name="com.offcn.entity"/> </typeAliases>

類型轉(zhuǎn)換器:


1.MyBatis自帶的類型轉(zhuǎn)換器:

2.自定義的類型轉(zhuǎn)換器:

步驟:

a.創(chuàng)建轉(zhuǎn)換器:需要實(shí)現(xiàn)TypeHandler接口,實(shí)現(xiàn)轉(zhuǎn)換器有兩種方式:

  i.實(shí)現(xiàn)接口TypeHandler

  ii.繼承BaseTypeHander

創(chuàng)建converter轉(zhuǎn)換器,代碼如下:

package com.offcn.converter;import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType;public class BooleanToIntConverter extends BaseTypeHandler<Boolean>{//DB ---> java @Override//根據(jù)名字拿public Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException {// TODO Auto-generated method stubint sexNo = rs.getInt(columnName);return sexNo == 1?true:false;}//根據(jù)下標(biāo)拿 @Overridepublic Boolean getNullableResult(ResultSet rs, int columnIndex) throws SQLException {// TODO Auto-generated method stubint sexNo = rs.getInt(columnIndex);return sexNo == 1?true:false;}//根據(jù)存儲(chǔ)過程拿 @Overridepublic Boolean getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {// TODO Auto-generated method stubint sexNo = cs.getInt(columnIndex);return sexNo == 1?true:false;}//java ---> DB @Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbc) throws SQLException {// TODO Auto-generated method stubif(parameter) {ps.setInt(i, 1);}else {ps.setInt(i, 0);}}}

在conf.xml文件中配置類型轉(zhuǎn)換器:

<typeHandlers><typeHandler handler="com.offcn.converter.BooleanToIntConverter" javaType="Boolean" jdbcType="INTEGER"/> </typeHandlers>

映射文件中查找的sql:(DB ---> JAVA)

<!-- 帶類型轉(zhuǎn)換器的查詢 --><select id="queryPersonByIdWithConverter" parameterType="int" resultMap="personResult">select * from person where id = #{id}</select><resultMap type="person" id="personResult"><!-- 分為主鍵和非主鍵,主鍵用id,非主鍵用result --><id property="id" column="id"/><result property="name" column="name"/><result property="bir" column="bir"/><result property="address" column="address"/><result property="sex" column="sex" javaType="Boolean" jdbcType="INTEGER" /></resultMap>

接口中定義對(duì)應(yīng)的方法:

Person queryPersonByIdWithConverter(int id);

測(cè)試類進(jìn)行測(cè)試:

public static void queryPersonByIdWithConverter() throws IOException {//讀取conf.xml文件Reader reader = Resources.getResourceAsReader("conf.xml");//創(chuàng)建sqlSessionFactorySqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//獲取sqlSessionSqlSession session = sessionFactory.openSession();//通過session定位映射文件personMapper personMapper = session.getMapper(personMapper.class);//定位sql語句并執(zhí)行Person person = personMapper.queryPersonByIdWithConverter(4);//提交事務(wù) session.commit();System.out.println(person);//關(guān)閉連接 session.close();}

映射文件中增加的sql:(JAVA --> DB)

<!-- 帶類型轉(zhuǎn)轉(zhuǎn)器的增加 --><insert id="insertPersonWithConverter" parameterType="person" >insert into person (name,bir,address,sex) value (#{name},#{bir},#{address},#{sex,javaType=Boolean,jdbcType=INTEGER})</insert>

接口中定義對(duì)應(yīng)的方法:

測(cè)試類進(jìn)行測(cè)試:

//帶轉(zhuǎn)換器的增加操作public static void insertPersonWithConverter() throws IOException {//讀取conf.xml文件Reader reader = Resources.getResourceAsReader("conf.xml");//獲取sqlSessionFactorySqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//獲取sqlSessionSqlSession session = sessionFactory.openSession();//定位映射文件的位置personMapper personMapper = session.getMapper(personMapper.class);//定位sql并執(zhí)行Person person = new Person("小孫",new Date(),"青島",true);personMapper.insertPersonWithConverter(person);//提交事務(wù) session.commit();System.out.println("增加成功");//關(guān)閉連接 session.close();}

最后關(guān)于:sql標(biāo)簽中什么時(shí)候用resultType什么時(shí)候用resultMap

1.如果表中字段和實(shí)體類中的屬性的類型合理識(shí)別,則用resultType,否則用resultMap

2.如果表中字段的名字和實(shí)體類中屬性名能夠合理識(shí)別,則用resultType,否則用resultMap

?

轉(zhuǎn)載于:https://www.cnblogs.com/man-tou/p/11335402.html

總結(jié)

以上是生活随笔為你收集整理的04.MyBatis别名的设置和类型转换器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。