zoukankan      html  css  js  c++  java
  • mybatis逆向工程

    逆向工程:根据数据库表自动生成po类及相应的接口和映射。

      注意:逆向工程只能生成单个表的po类,但是它并不知道表和表的对应关系。

     Mybatis逆向工程

      使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件.

      作用:mybatis官方提供逆向工程,可以使用它通过数据库中的表来自动生成Mapper接口和映射文件(单表增删改查)Po.

      导入的jar包有:

    1.1 第一步:mapper生成配置文件:

    在generatorConfig.xml中配置mapper生成的详细信息,注意改下几点:

    1、修改连接数据库的数据表,以及用户名和密码

    2、 添加要生成的数据库表

    3、 po文件所在包路径

    4、 mapper文件所在包路径

    配置文件如下:

     

    <?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>
        <context id="testTables" targetRuntime="MyBatis3">
            <commentGenerator>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
                password="root">
            </jdbcConnection>
            <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
                connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
                userId="yycg"
                password="yycg">
            </jdbcConnection> -->
    
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
                NUMERIC 类型解析为java.math.BigDecimal -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- targetProject:生成PO类的位置 -->
            <javaModelGenerator targetPackage="com.huida.po"
                targetProject=".src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
                <!-- 从数据库返回的值被清理前后的空格 -->
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
            <!-- targetProject:mapper映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="com.huida.mapper" 
                targetProject=".src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </sqlMapGenerator>
            <!-- targetPackage:mapper接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER"
                targetPackage="com.huida.mapper" 
                targetProject=".src">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>
            <!-- 指定数据库表 -->
            <!-- <table tableName="items"></table> -->
            <table tableName="orders"></table>
            <!-- <table tableName="orderdetail"></table> -->
            <table tableName="user"></table>
            <!-- <table schema="" tableName="sys_user"></table>
            <table schema="" tableName="sys_role"></table>
            <table schema="" tableName="sys_permission"></table>
            <table schema="" tableName="sys_user_role"></table>
            <table schema="" tableName="sys_role_permission"></table> -->
            
            <!-- 有些表的字段需要指定java类型
             <table schema="" tableName="">
                <columnOverride column="" javaType="" />
            </table> -->
        </context>
    </generatorConfiguration>

     

    1.2 第二步:使用java类生成mapper文件:

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    public class StartService {
    
        public void generator() throws Exception{
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            File configFile = new File("generatorConfig.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);
        }
        public static void main(String[] args) throws Exception {
            try {
                StartService ss=new StartService();
                ss.generator();
            } catch (Exception e) {
                e.printStackTrace();
            }
    }
    }

    1.3 第三步:运行编写的java类来生成对应的文件

      右击--->Run As--->Java Application。

      注意这里应该是应该是Java Application。

    1.4 第四步:拷贝生成的mapper文件到工程中指定的目录中

      比如我们之前建立一个工程为:spring-mybatis,我们当前逆向工程的工程名为gerneratorDemo,我们将当前工程下生成的mapper.xml以及mapper接口都复制到我们spring-mybatis工程下的mapper包下;同时也将当前工程下生成的po类复制到我们spring-mybatis工程下的po包下。

      注意:mapper.xml文件和mapper.java文件在同一个目录内且文件名相同。

     

    1.5 第五步:Mapper接口测试

      我们在spring-mybatis工程下创建测试文件进行测试。mapper自动生成了基本的增删改查方法,如:

    //删除符合条件的记录
    int deleteByExample(UserExample example);
    //根据主键删除
    int deleteByPrimaryKey(String id);
    //插入对象所有字段
    int insert(User record);
    //插入对象不为空的字段
    int insertSelective(User record);
    //自定义查询条件查询结果集
    List<User> selectByExample(UserExample example);
    //根据主键查询
    UserselectByPrimaryKey(String id);
    //根据主键将对象中不为空的值更新至数据库
    int updateByPrimaryKeySelective(User record);
    //根据主键将对象中所有字段的值更新至数据库
    int updateByPrimaryKey(User record);

      我们如果仅是进行简单的增删改查方法,可以拿过来直接用,但是如果我们需要进行一些复合查询,则需要使用他创建的UserExample中po类来传输一些条件。

      我们的测试代码如下:

    package comm.huida.test;
    
    
    import java.util.List;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.huida.mapper.UserMapper;
    import com.huida.po.User;
    import com.huida.po.UserExample;
    import com.huida.po.UserExample.Criteria;
    
    public class UserMapperTest {
    
        private ApplicationContext applicationContext;
        @Before
        public void setUp(){
            applicationContext=new ClassPathXmlApplicationContext("classpath:config/applicationContext.xml");
        }
        /*@Test
        public void testFindUserById(){
            UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
            User user=userMapper.findUserById(1);
            System.out.println(user);
        }*/
        
        @Test
        public void testFindUserById(){
            UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
            User user=userMapper.selectByPrimaryKey(1);
            System.out.println(user);
        }
        /*
         * 通过姓名和性别进行查找
         * 找姓名中包含“li”,性别为1
         */
        @Test
        public void testFindUserAndSex(){
            UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
            //创建UserExample对象,并且加入条件
            UserExample example=new UserExample();
            Criteria criteria=example.createCriteria();
            //加入条件
            criteria.andUsernameLike("%li%");
            criteria.andSexEqualTo("1");
            List<User> list=userMapper.selectByExample(example);
            System.out.println(list);
        }
    }
  • 相关阅读:
    为什么说http协议是无状态协议
    LR中获取当前系统时间的方法
    在Ubuntu Server下配置LAMP环境
    服务器性能监控
    性能测试:过程和重要指标
    LR中线程和进程的区别
    怎样获取Windows平台下SQL server性能计数器值
    用Excel创建SQL server性能报告
    Windows下部署Appium教程(Android App自动化测试框架搭建)
    性能测试指标
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10160356.html
Copyright © 2011-2022 走看看