Mybatis初体验(二)

 

一、代理开发规则

① mapper.xml文件中namespace与mapper接口的全限定名相同。

② mapper接口方法名和mapper.xml中定义的每个statement的id相同。

③ mapper接口方法的传入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同,并且返回参数类型的resultType的类型相同。

如图:

 二、Mybatis映射文件配置

  • select:查询 
    <select id="findAll" resultType="com.itcast.domain.user">  select * from user  </select>

     

  • insert:插入 
     <insert id="save" parameterType="com.itcast.domain.user" >
            insert  into user values (#{Id},#{userName},#{passWord})
        </insert>

     

  • update:修改 
     <update id="edit" parameterType="com.itcast.domain.user">
            update user set username=#{userName},password=#{passWord} where id=#{Id}
        </update>

     

  • delete:删除
     <delete id="remove" parameterType="int">
            delete  from user where id=#{id}
        </delete>

     

  • where:where条件
    <mapper namespace="com.itcast.dao.UserMapper">
      <sql id="query">
                select * from userInfo
        </sql>
    <select id="queryByWhere" resultType="com.itcast.domain.user" parameterType="com.itcast.domain.user">
            <include refid="query"></include>
            <where>
                <if test="id!=0">
                    and id=#{id}
                </if>
                <if test="userName!=null">
                    and username=#{userName}
                </if>
                <if test="passWord!=null">
                    and password=#{passWord}
                </if>
            </where>
        </select>
    </mapper>

     

  • if:判断,同上
  • foreach:循环 
    <?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.itcast.dao.UserMapper">
    
        <sql id="query">
                select * from user
        </sql>
      <select id="queryByIds" parameterType="list" resultType="com.itcast.domain.user">
            <include refid="query"></include>
            <where>
                <foreach collection="list" open=" id in(" close=")" separator="," item="id">
                    #{id}
                </foreach>
            </where>
        </select>
    
    </mapper>

     

  • sql:sql片段抽取 通常与 include 标签一起进行使用

 

三、自定义类型转换处理器(typeHandlers)

  1. 定义类型转换处理器类继承 org.apache.ibatis.type.BaseTypeHandler 下的 BaseTypeHandler<T>类
  2. 实现BaseTypeHandler<T>类中的四个抽象方法,其中 setNonNullParameter 为java程序设置数据到数据库的回调方法,getNullableResult为查询数据库的字符串类型转换成java的Type类型的方法。
  3. Mybatis核心配置文件中注册
public class DateTypeHandler extends BaseTypeHandler<Date> {
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        long time = date.getTime();
        preparedStatement.setLong(i, time);
    }

    @Override
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        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;
    }
}
 <typeHandlers>
        <typeHandler handler="com.itcast.handler.DateTypeHandler"></typeHandler>
    </typeHandlers>

四、分页插件pageHelper

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>3.2</version>
        </dependency>

sqlMapConfig.xml中注册:

<plugins>
        <!--   配置分页助手    4.0.0版本后不实现PageHelper,自动匹配数据库 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--     指定方言       -->
<!--            <property name="dialect" value="mysql"/>-->
        </plugin>
    </plugins>

五、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>

    <properties resource="jdbc.properties"></properties>

    <typeAliases>
        <typeAlias type="com.itcast.domain.UserInfo" alias="user"></typeAlias>
    </typeAliases>

    <typeHandlers>
        <typeHandler handler="com.itcast.handler.DateTypeHandler"></typeHandler>
    </typeHandlers>

    <plugins>
        <!--   配置分页助手    4.0.0版本后不实现PageHelper,自动匹配数据库 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--     指定方言       -->
<!--            <property name="dialect" value="mysql"/>-->
        </plugin>
    </plugins>

    <environments default="developement">
        <environment id="developement">
            <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/itcast/mapper/UserInfoMapper.xml"></mapper>
    </mappers>
</configuration>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值