互联网科技Java 杂谈Java成长之路

java框架之mybatis(二)

2019-03-19  本文已影响10人  Java_老男孩

五、整合spring(SSM整合)

1、导包

(1)核心包:spring包、springmvc包、mybatis包、spring-mybatis整合包

(2)其他包:日志包、连接池包

2、mybatis 配置

(1)主要就是配全局 settings 等

3、springMVC 配置

(1)controller 扫描;

(2)视图解析器;

(3)注解驱动;

(4)默认servlet 处理;

4、spring 配置

(1)包扫描;

(2)数据源的配置;

(3)事务管理(基于注解的事务);

(4)sqlSessionFactory配置;

(5)配置可以批量执行的 sqlSession;

(6)配置Mapper 接口的扫描(不可少);

5、web.xml配置

(1)全局参数配置 spring配置文件的路径;

(2)配置spring 监听;

(3)配置 springmvc 的DispatcherServlet;

(4)spring框架会自动加载 web-inf 下的配置文件,classpath 路径下的配置文件需要配置路径;

(5)所有配置文件的示例;

六、逆向工程

1、概念

2、使用

(1)导包

(2)配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- targetRuntime="MyBatis3Simple":生成简单版的CRUD
        MyBatis3:豪华版    -->
  <context id="DB2Tables" targetRuntime="MyBatis3">
      <!-- jdbcConnection:指定如何连接到目标数据库 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true"
        userId="root"
        password="123456">
    </jdbcConnection>

    <!--  -->
    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <!-- javaModelGenerator:指定javaBean的生成策略 
    targetPackage="test.model":目标包名
    targetProject="\MBGTestProject\src":目标工程
    -->
    <javaModelGenerator targetPackage="com.atguigu.mybatis.bean" 
            targetProject=".\src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <!-- sqlMapGenerator:sql映射生成策略: -->
    <sqlMapGenerator targetPackage="com.atguigu.mybatis.dao"  
        targetProject=".\conf">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <!-- javaClientGenerator:指定mapper接口所在的位置 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.mybatis.dao"  
        targetProject=".\src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <!-- 指定要逆向分析哪些表:根据表要创建javaBean -->
    <table tableName="tbl_dept" domainObjectName="Department"></table>
    <table tableName="tbl_employee" domainObjectName="Employee"></table>
  </context>
</generatorConfiguration>

(3)运行生成器 java 代码

public void testMbg() throws Exception {
    List<String> warnings = new ArrayList<String>();
    boolean overwrite = true;
    File configFile = new File("mbg.xml");
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = cp.parseConfiguration(configFile);
    DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
            callback, warnings);
    myBatisGenerator.generate(null);
}

3、注意事项

七、运行原理

1、sqlsessionfactory 初始化

2、sqlsession 对象获取

3、获取接口代理对象

4、查询实现

八、插件扩展

1、插件开发

(1)原理

(2)简单实现–单个插件

(3)多个插件:拦截同一个对象同一个方法

包装:顺序包装;
执行:逆序执行;
特点:多个插件是对目标对象进行层层包装的;

(4)开发示例:

(5)PageHelper 插件

1)使用:导包-----主配置文件注册插件------mapper查询前设置参数;
2)说明:参数设置后可以返回一个 page 对象其中包含很多分页信息;也可以用pageinfo包装查询结果;

2、扩展

(1)批量执行sql语句

<!--配置一个可以进行批量执行的sqlSession  -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean"></constructor-arg>
    <constructor-arg name="executorType" value="BATCH"></constructor-arg>
</bean>

(2)mybatis 调用存储过程

(3)自定义类型处理器处理枚举类型

上一篇 下一篇

猜你喜欢

热点阅读