• mybatis_开发篇


    一、使用mybatis的动态代理方式开发

    需求:这里以crm系统中分页条件查询所有的客户信息的功能为例?

    1、创建工程

    2、引入所需的jar包

    3、引入日志文件、数据库连接参数的配置文件等

    4、创建mybatis的核心配置文件,其中包括加载数据参数的配置文件和mybatis的映射文件,还有配置数据源(个人比较喜欢使用阿里巴巴的druid)等。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:aop="http://www.springframework.org/schema/aop" 
     6     xmlns:tx="http://www.springframework.org/schema/tx"
     7     xmlns:task="http://www.springframework.org/schema/task"
     8     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
     9     xsi:schemaLocation="http://www.springframework.org/schema/beans 
    10         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    11         http://www.springframework.org/schema/mvc 
    12         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
    13         http://www.springframework.org/schema/context 
    14         http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    15         http://www.springframework.org/schema/aop 
    16         http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
    17         http://www.springframework.org/schema/tx 
    18         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    19         http://www.springframework.org/schema/task
    20            http://www.springframework.org/schema/task/spring-task-4.0.xsd
    21         http://code.alibabatech.com/schema/dubbo        
    22         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    23         
    24         
    25     <!-- spring整合mybatis的配置文件 -->
    26     <!-- 1、加载数据库连接配置文件 -->
    27     <context:property-placeholder location="classpath:db.properties"/>
    28     <!-- 2、数据源 -->
    29     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    30         <property name="driverClassName" value="${jdbc.driver}"/>
    31         <property name="url" value="${jdbc.url}"/>
    32         <property name="username" value="${jdbc.username}"/>
    33         <property name="password" value="${jdbc.password}"/>
    34         <property name="maxActive" value="10" />
    35         <property name="maxIdle" value="5" />
    36     </bean>
    37     
    38     <!-- 3、管理mybatis的会话工厂对象 -->
    39     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    40         <!-- 注入数据源 -->
    41         <property name="dataSource" ref="dataSource"/>
    42         <!-- 加载mybatis的全局配置文件 -->
    43         <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
    44     </bean>
    45     
    46     <!-- 4、管理mybatis中所有mapper接口的代理对象 -->
    47     <bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    48         <property name="basePackage" value="com.zxz.ssm.crm.mapper"/>
    49     </bean>
    50         
    51 </beans>

    5、创建pojo类

    6、创建mybatis的映射文件(配置成功后记得将该映射文件加载到mybatis的核心配置文件中)

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!DOCTYPE mapper
      3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      5 
      6 <!-- 客户: -->
      7 <mapper namespace="com.zxz.ssm.crm.mapper.CustomerMapper">
      8 
      9     <!-- 提取查询条件的sql语句 -->
     10     <sql id="customer_where">
     11         <where>
     12             <if test="custName!=null and custName!=''">
     13                 <!-- 【注意:这里尽量使用#{}占位符,是为了防止sql注入的问题】,但是也可以使用${}拼接符 -->
     14                 <!-- and cust_name like '%${custName}%' -->
     15                 and cust_name like "%"#{custName}"%"
     16             </if>
     17             <if test="custSource!=null and custSource!=''">
     18                 and cust_source=#{custSource}
     19             </if>
     20             <if test="custIndustry!=null and custIndustry!=''">
     21                 and cust_industry=#{custIndustry}
     22             </if>
     23             <if test="custLevel!=null and custLevel!=''">
     24                 and cust_level=#{custLevel}
     25             </if>
     26         </where>
     27     </sql>
     28     
     29     <!-- 带分页查询数据 -->
     30     <!-- 按用户传递过来的参数条件查询客户数据的集合: -->
     31     <select id="findByQueryVoList" parameterType="com.zxz.ssm.crm.pojo.QueryVo" resultType="com.zxz.ssm.crm.pojo.Customer">
     32         select 
     33             c.cust_id,c.cust_name,b1.dict_item_name cust_source,b2.dict_item_name cust_industry,b3.dict_item_name cust_level,
     34             c.cust_linkman,c.cust_phone,c.cust_mobile,c.cust_zipcode,c.cust_address
     35         from customer c
     36         LEFT JOIN base_dict b1 on c.cust_source=b1.dict_id
     37         LEFT JOIN base_dict b2 on c.cust_industry=b2.dict_id
     38         LEFT JOIN base_dict b3 on c.cust_level=b3.dict_id
     39         <include refid="customer_where"/>
     40         limit #{start},#{size}
     41     </select>
     42     
     43     <!-- 带分页查询数据 -->
     44     <!-- 按用户传递过来的参数条件查询数据的总记录数 -->
     45     <select id="findByQueryCount" parameterType="com.zxz.ssm.crm.pojo.QueryVo" resultType="java.lang.Integer">
     46         select 
     47             count(*)
     48         from customer c
     49         LEFT JOIN base_dict b1 on c.cust_source=b1.dict_id
     50         LEFT JOIN base_dict b2 on c.cust_industry=b2.dict_id
     51         LEFT JOIN base_dict b3 on c.cust_level=b3.dict_id
     52         <include refid="customer_where"/>
     53     </select>
     54</mapper>

    7、通过service层注入mapper接口的代理对象调用查询方法,接着再controller控制层调用service成中的查询方法得到相应的数据,并存放到model对象中,最后填充在页面上即可。

  • 相关阅读:
    什么是前后端分离?
    Ubuntu修改时区和更新时间
    待学
    Pycharm默认输入状态是insert状态,选中文字无法直接输入替换或删除
    使用jsonify返回json数据
    Linux
    Linux
    Linux
    JavaScript
    JavaScript
  • 原文地址:https://www.cnblogs.com/1315925303zxz/p/6243874.html
Copyright © 2020-2023  润新知