MyBatis各种配置

db.properties

  1. db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/123?useSSL=FALSE&&serverTimezone=GMT
username=root
password=932567
  1. xml
<properties resource="db.properties"/>
<dataSource type="POOLED">
    <!-- 数据库信息 -->
    <property name="driver" value= "${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
</dataSource>

Mybatis 全局参数,一般不要设置

config.xml

<settings>
    <setting name="" value=""/>
</settings>

别名设置

<typeAliases>
    <!-- 定义单个别名(别名忽略大小写) -->
    <typeAlias type="entity.Student" alias="Student"/>
    <!-- 按包定义别名(别名忽略大小写) -->
    <!-- 该包下所有类别名为本身类名 -->
    <package name="entity"/>
</typeAliases>

类型处理器

  1. Mybatis自带一些常见的类型处理器 如 int - number
  2. 自定义MyBatis类型处理器(以下为例)
实体类Student表student
Boolean stuSexnumber stuSex
true:男,false:女1:男,2:女

a. 创建转换器:需要继承TypeHandler接口(一般继承其子类BaseTypeHandler)

public class BooleanAndIntConverter extends BaseTypeHandler<Boolean> {

    /**
     *java(boolean) -> db(number)
     * ps PreparedStatement对象
     * i PreparedStatement对象操作参数的位置
     * parameter java值
     * jdbcType jdbc操作的数据库类型
     */
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType) throws SQLException {
        if(parameter)
            ps.setInt(i,1);
        else
            ps.setInt(i,0);
    }

    /**
     * db(number) -> java(boolean)
     * 以下三种方法分别是结果集不同的取值方法
     */
    @Override
    public Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException {
        int i = rs.getInt(columnName);
        // i = 1 || i = 0
        return i == 1;
    }

    @Override
    public Boolean getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        int i = rs.getInt(columnIndex);
        // i = 1 || i = 0
        return i == 1;
    }

    @Override
    public Boolean getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        int i = cs.getInt(columnIndex);
        // i = 1 || i = 0
        return i == 1;
    }
}

b. 配置MyBatisConfig.xml

<typeHandlers>
    <typeHandler handler="typeHandler.BooleanAndIntConverter" javaType="boolean"  jdbcType="INTEGER"/>
</typeHandlers>

c. 使用时StudentMapper.xml
db - > java

<!-- 如果实体类 属性 和表中字段的 类型 能够合理识别(String-varchar),可用resultType 否则用resultMap -->
<!-- 如果实体类 属性名 和表中字段的 字段名 能够合理识别(stuNo - stuNo),可用resultType 否则用resultMap -->
<select id="queryStudentByStuNoWithConverter" parameterType="int" resultMap="studentResultMap">
    select * from  student where stuNo = #{id}
</select>

<resultMap id="studentResultMap" type="student">
    <!-- 分为主键id 和非主键result -->
    <id property="stuNo" column="stuNo"/>
    <result property="stuAge" column="stuAge"/>
    <result property="graName"  column="stuName"/>
    <result property="graName"  column="graName"/>
    <result property="stuSex" column="stuSex" javaType="boolean"  jdbcType="INTEGER"/>
</resultMap>

java -> db

<insert id="addStudentWithConverter" parameterType="student">
     insert into student values (#{stuNo},#{stuName},#{stuAge},#{graName},#{stuSex,javaType=boolean,jdbcType=INTEGER})
</insert>

ResultMap

例子见上,主要两个功能:

  1. 类型转换
  2. 实体类属性-数据表字段的映射关系(类型或者名字不同时)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值