zoukankan      html  css  js  c++  java
  • Mybatis学习笔记9:Mybatis逆向工程

    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="MBGTestProjectsrc":目标工程
    	-->
        <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、MBG逆向生成所有代码及配置


    @Test
    	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);
    	}
    

    4、简单查询和测试复杂查询

    简单版

    public SqlSessionFactory getSqlSessionFactory() throws IOException {
    		String resource = "mybatis-config.xml";
    		InputStream inputStream = Resources.getResourceAsStream(resource);
    		return new SqlSessionFactoryBuilder().build(inputStream);
    	}
    

    @Test
    	public void testMyBatis3Simple() throws IOException{
    		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    		SqlSession openSession = sqlSessionFactory.openSession();
    		try{
    			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    			List<Employee> list = mapper.selectByExample(null);
    			for (Employee employee : list) {
    				System.out.println(employee.getId());
    			}
    		}finally{
    			openSession.close();
    		}
    	}
    	
    

    豪华版



    @Test
    	public void testMyBatis3() throws IOException{
    		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    		SqlSession openSession = sqlSessionFactory.openSession();
    		try{
    			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    			//xxxExample就是封装查询条件的
    			//1、查询所有
    			//List<Employee> emps = mapper.selectByExample(null);
    			//2、查询员工名字中有e字母的,和员工性别是1的
    			//封装员工查询条件的example
    			EmployeeExample example = new EmployeeExample();
    			//创建一个Criteria,这个Criteria就是拼装查询条件
    			//select id, last_name, email, gender, d_id from tbl_employee 
    			//WHERE ( last_name like ? and gender = ? ) or email like "%e%"
    			Criteria criteria = example.createCriteria();
    			criteria.andLastNameLike("%e%");
    			criteria.andGenderEqualTo("1");
    			
    			Criteria criteria2 = example.createCriteria();
    			criteria2.andEmailLike("%e%");
    			example.or(criteria2);
    			
    			List<Employee> list = mapper.selectByExample(example);
    			for (Employee employee : list) {
    				System.out.println(employee.getId());
    			}
    			
    		}finally{
    			openSession.close();
    		}
    	}
    	
    
    
  • 相关阅读:
    P4630-[APIO2018]Duathlon铁人两项【圆方树】
    P4980-[模板]Pólya定理
    bzoj4589-Hard Nim【FWT】
    CF700E-Cool Slogans【SAM,线段树合并,dp】
    sqrt数据结构
    NOIP历年好题
    ACM题解吖
    [ZJOI2010]排列计数
    [CQOI2014]数三角形
    [SHOI2007]书柜的尺寸
  • 原文地址:https://www.cnblogs.com/xidianzxm/p/12455927.html
Copyright © 2011-2022 走看看