zoukankan      html  css  js  c++  java
  • MyBatis的简单使用

    使用接口代理是需要注意:

    1.xml和java接口必须同包同名

    2.主xml文件中<mapper>标签中‘class’属性需要映射到接口

    3.被映射的xml(和接口同名)中<mapper namespace="接口全路径">

    4.操作标签(增删改查)的id和接口中方法名一致

    5.接口不需要实现,SqlSessionFactory获取SqlSession对象,再通过反射sqlSession.getMapper(接口名.class) 得到对象,调用接口方法;

    InputStream is = Resources.getResourceAsStream("com/bwf01/config/main.xml");//读主配置文件
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    接口 jm = sqlSession.getMapper(接口.class);//jm 调用直接接口中的方法
    

      

    主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="com/bwf01/config/sqlConfig.properties">
                <property name="driver" value="driver"/>
                <property name="url" value="url"/>
                <property name="username" value="user"/>
                <property name="password" value="password"/>
        </properties>
        <!-- 设置映射别名   别名是为 Java 类型设置一个短的名字
        <typeAliases>
             <typeAlias type="" alias=""/>         
        </typeAliases> -->
        <settings><!-- 配置日志 -->
        <setting name="logImpl" value="LOG4J"/>
        </settings>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC">            
                </transactionManager>
                <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>
    <!-- 设置映射 和接口同名的xml文件-->    
    <mappers>
         <mapper class="com.bwf01.mapper.JobMapper"></mapper>
         <mapper class="com.bwf01.mapper.UserMapper"></mapper>
         <mapper class="com.bwf01.mapper.FirmMapper"></mapper>
         <mapper class="com.bwf01.mapper.AdminMapper"></mapper>
         <mapper class="com.bwf01.mapper.PVMapper"></mapper>
    </mappers>
    </configuration>

    实现接口代理的xml文件:

    1.操作标签(增删改查)的id和接口中方法名一致

    2.数据库字段和类属性的映射对应

    3.配置字段和属性映射时可以使用 extends 

    4.操作标签中可以用动态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.bwf01.mapper.JobMapper">
      
      <resultMap type="com.bwf01.bean.Job" id="shareselectJob">
          <!--数据库字段和类属性的映射对应  -->
          <id column="jobId" property="jobId"/>
             <result column="jobName" property="jobName"/>
             <result column="workPlace" property="workPlace"/>
             <result column="workType" property="workType"/>
             <result column="numbers" property="numbers"/>
             <result column="salary" property="salary"/>
             <result column="payType" property="payType"/>
             <result column="workDate" property="workDate"/>
             <result column="workTime" property="workTime"/>
             <result column="endDate" property="endDate"/>
             <result column="firmId" property="firmId"/>
             <result column="principal" property="principal"/>
             <result column="tell" property="tell"/>
             <result column="workDetails" property="workDetails"/>
             <result column="status" property="status"/>
             <result column="curentNum" property="curentNum"/>
             <result column="joinStatus" property="joinStatus"/>
      </resultMap>
      
      <resultMap type="com.bwf01.bean.Job" id="selectJob" extends="shareselectJob">
                  <!-- 某个属性是自定义类型,联表查询映射到一个表中的对应字段 -->         
             <association property="firm" javaType="com.bwf01.bean.Firm">
                <id column="firmId" property="firmId"/>
                <result column="logo" property="logo"/>
                <result column="firmName" property="firmName"/>
            </association>
            <!-- 某个属性是自定义类型,联表查询映射到一个表中的对应字段 --> 
            <association property="jobKind" javaType="com.bwf01.bean.JobKind">
                <id column="kindId" property="kindId"/>
                <result column="jobStyle" property="jobStyle"/>
            </association>
      </resultMap>
    <select id="selectJobByPage" parameterType="com.bwf01.vo.JobPage" resultMap="selectJob">
            select job.*,logo,firmName,jobStyle from job INNER JOIN firm join jobkind 
             on job.firmId = firm.firmId and jobkind.kindId = job.kindId 
                        where job.status = '审核通过' and joinStatus = '正在报名'
        <if test="kindId !=0">
        and job.kindId = #{kindId}
        </if>
        <if test="region!=null and region!=''">
         and job.workPlace like '%${region}%'
        </if>                                
        limit ${(page-1)*10},10    
      </select>
    </mapper>
  • 相关阅读:
    css选择器中的*= , |= , ^= , $= , ~= 的区别
    css 实现小三角
    使用vitevue3ts快速上手做一个todolist
    什么是回流和重绘?
    vue好用组件推荐
    Vue代码风格及规范
    聊聊 SpringBoot 中的两种占位符:@*@ 和 ${*}
    Maven 依赖调解源码解析(三):传递依赖,路径最近者优先
    Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码
    Maven 依赖调解源码解析(五):同一个文件内声明,后者覆盖前者
  • 原文地址:https://www.cnblogs.com/nijunyang/p/7526734.html
Copyright © 2011-2022 走看看