MyBatis第二天

第一,创建util
在util里创建SqlSessionFactory;
创建inputStream得到xml配置文件,对其进行设置环境,数据库连接的properties

<configuration>
    <environments default="oracleds">
        <environment id="oracleds">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
                <property name="username" value="hr"/>
                <property name="password" value="hr"/>
            </dataSource>
        </environment>
    </environments>

(一定要把dao的xml配置好,否则此xml读取dao.xml文件时会报错)

<!--dao.xml-->
<mappers>
      <mapper resource="com/zpark/person/dao/impl/PersonDAOImpl.xml"/>
</mappers>

,通过SqlSessionFatoryBuilder读取inputstream创建SqlSessionFactory。
创建方法,返回SqlSessionFactory创建的sqlsession。

    private static SqlSessionFactory sf = null;
static {
    InputStream is = null;
    try {
        is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        sf = sfb.build(is);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            is.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

/**
 * 获得SqlSession对象
 */
public static SqlSession openSession(){
    return sf.openSession();
}

使用Junit4测试是否连接成功

第二,根据需求创建view
在view层定义好所有方法及界面

第三,根据view建立service层接口

第四,根据service层接口需求定义dao层接口

第五,在dao层里的xml文件完善dao。

  • *其中首先要注意parameterType里面的路径以及sql语句,如果需要模糊查询可以使用变量||‘%’
  • *只有一个参数,且参数类型不是实体类型,sql语句绑定参数 #{参数名}
  • *查询语句,MyBatis会将select查询sql的结果,会将每个字段的数据赋值给实体的相同名字的属性;
  • *如果列名和返回值的实体属性名不一致,可以通过as “别名”
  • *如果查询结果是集合,select标签的返回值类型,是集合中元素的类型权限定名
<mapper namespace="com.zpark.person.dao.PersonDAO">
    <!-- insertPerson -->
    <insert id = "insertPerson" parameterType="com.zpark.person.entity.Person">
        <selectKey keyProperty="id" resultType="java.lang.Integer" order="BEFORE">
            select seq_person.nextval from dual
        </selectKey>
        insert into t_person(p_id,name,age,sex,email,address,mobile)
        values(#{id},#{name},#{age},#{sex},#{email},#{address},#{mobile})
    </insert>


    <select id="queryAllPersons" resultType="com.zpark.person.entity.Person">
        select p_id as "id",name,age,sex,email,address,mobile from t_person
    </select>

    <select id="queryPersonByName" parameterType="java.lang.String" resultType="com.zpark.person.entity.Person">
        select p_id as "id",name,age,sex,email,address,mobile from t_person where name like #{name}||'%'
    </select>

    <select id="queryPersonById" parameterType="java.lang.Integer" resultType="com.zpark.person.entity.Person">
        select  p_id as "id",name,age,sex,email,address,mobile from t_person where p_id = #{id}
    </select>

    <select id="queryPersonByMobile" parameterType="java.lang.String" resultType="com.zpark.person.entity.Person">
        select p_id as "id",name,age,sex,email,address,mobile from t_person where mobile like #{mobile}||'%'
    </select>

    <delete id="deletePerson" parameterType="java.lang.Integer" >
        delete from t_person where p_id = #{id}
    </delete>

    <update id="updatePerson" parameterType="com.zpark.person.entity.Person" >
        update t_person set name = #{name},age = #{age},sex = #{sex},email = #{email},address = #{address},mobile = #{mobile} where p_id = #{id}
    </update>
</mapper>
如果查询参数有多个:
    1.不能用parameterType属性:
    2.接口的方法声明中,对每个参数使用  @Param(value="参数别名")//value=  可以省略
    3.mapper文件中sql,绑定参数  #{参数别名}
如果sql语句中包含   >    <  特殊转义字符
    方法1:使用CADATA块
        <![CDATA[
            ...被当做普通字符串解析
        ]]>
    方法2:转义字符:
        >   &gt;
        <   &lt;

第六,使用Junit4测试dao

第七,将service补充完整,并使用Junit4测试

将view层补充完整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值