zoukankan      html  css  js  c++  java
  • Rhythmk 一步一步学 JAVA (15) mybatis 入门学习-1

    1、mybatis 通过mybatis-generator-core-1.3.2 代码生成:

           工具下载地址:

           https://code.google.com/p/mybatis/

       解压工具包 mybatis-generator-core-1.3.2 找到lib目录 添加 配置文件,根据文档说明执行代码生成:

    <?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">  
      
      <!--
         使用说明:
           
           cmd
           cd  安装包存放路径
             eg:
            cd C:MybatisCodeBuildToollib
            
            执行:
            java -jar mybatis-generator-core-1.3.2.jar -configfile 配置文件.xml -overwrite  
                 
      
      -->
      
    <generatorConfiguration>  
        <!-- 陪在数据库连接驱动 --> 
        <classPathEntry location="mysql-connector-java-5.1.22-bin.jar" />  
      
        <context id="DB2Tables" targetRuntime="MyBatis3">  
      
            <commentGenerator>  
                <property name="suppressDate" value="true" />  
            </commentGenerator>  
      
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"  
                connectionURL="jdbc:mysql://localhost/mybatistest" userId="root" password="wangkun">  
            </jdbcConnection>  
      
            <javaTypeResolver>  
                <property name="forceBigDecimals" value="false" />  
            </javaTypeResolver>  
            
            <!-- model 实体代码生成:
                 targetPackage:命名空间
                 targetProject:生成文件目录(需要存在目录)
                      
            -->
            <javaModelGenerator targetPackage="com.rhythmk.model"  
                targetProject="javacodedir">  
                <property name="enableSubPackages" value="true" />  
                <property name="trimStrings" value="true" />  
            </javaModelGenerator>  
          
            <sqlMapGenerator targetPackage="com.rhythmk.dao"  
                targetProject="javacodedir">  
                <property name="enableSubPackages" value="true" />  
            </sqlMapGenerator>  
      
            <javaClientGenerator type="XMLMAPPER"  
                targetPackage="com.rhythmk.dao" targetProject="javacodedir">  
                <property name="enableSubPackages" value="true" />  
            </javaClientGenerator>  
          <!---
            table 代码配置:
               tableName:            数据库表名
               domainObjectName:     映射对象名
             
             通过下面配置选择生成操作方法,默认为true
             enableCountByExample="false" 
             enableUpdateByExample="false" 
             enableDeleteByExample="false" 
             enableSelectByExample="false" 
             selectByExampleQueryId="false"      
           -->
            <table tableName="MyUser" domainObjectName="MyUser"  enableCountByExample="false"  enableUpdateByExample="false"   enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"  >  
                <!-- ignoreColumn : 排除属性 --->
                <ignoreColumn column="Age" />
                
            </table>  
      
        </context>  
    </generatorConfiguration>  

    2、mybatis 增改查:

        项目结构:

    config.properties:

    db.driver=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/mybatistest?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    db.user=root
    db.pass=wangkun
    

      

    SqlMapConfig.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="config.properties"></properties>
    
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${db.driver}" />
                    <property name="url" value="${db.url}" />
                    <property name="username" value="${db.user}" />
                    <property name="password" value="${db.pass}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/rhythmk/dao/MyUserMapper.xml"/>
        </mappers>
    </configuration>
    

      MyUserMapper.xml:

    <?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.rhythmk.dao.MyUserMapper">
      <resultMap id="BaseResultMap" type="com.rhythmk.model.MyUser">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        <id column="ID" jdbcType="TINYINT" property="id" />
        <result column="UserName" jdbcType="VARCHAR" property="username" />
        <result column="CreateTime" jdbcType="TIMESTAMP" property="createtime" />
      </resultMap>
      <sql id="Base_Column_List">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        ID, UserName, CreateTime
      </sql>
      <select id="selectByPrimaryKey" parameterType="java.lang.Byte" resultMap="BaseResultMap">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        select 
        <include refid="Base_Column_List" />
        from myuser
        where ID = #{id,jdbcType=TINYINT}
      </select>
      <delete id="deleteByPrimaryKey" parameterType="java.lang.Byte">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        delete from myuser
        where ID = #{id,jdbcType=TINYINT}
      </delete>
      <insert id="insert" parameterType="com.rhythmk.model.MyUser">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        insert into myuser (ID, UserName, CreateTime
          )
        values (#{id,jdbcType=TINYINT}, #{username,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}
          )
      </insert>
      <insert id="insertSelective" parameterType="com.rhythmk.model.MyUser">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        insert into myuser
        <trim prefix="(" suffix=")" suffixOverrides=",">
          <if test="id != null">
            ID,
          </if>
          <if test="username != null">
            UserName,
          </if>
          <if test="createtime != null">
            CreateTime,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
          <if test="id != null">
            #{id,jdbcType=TINYINT},
          </if>
          <if test="username != null">
            #{username,jdbcType=VARCHAR},
          </if>
          <if test="createtime != null">
            #{createtime,jdbcType=TIMESTAMP},
          </if>
        </trim>
      </insert>
      <update id="updateByPrimaryKeySelective" parameterType="com.rhythmk.model.MyUser">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        update myuser
        <set>
          <if test="username != null">
            UserName = #{username,jdbcType=VARCHAR},
          </if>
          <if test="createtime != null">
            CreateTime = #{createtime,jdbcType=TIMESTAMP},
          </if>
        </set>
        where ID = #{id,jdbcType=TINYINT}
      </update>
      <update id="updateByPrimaryKey" parameterType="com.rhythmk.model.MyUser">
        <!--
          WARNING - @mbggenerated
          This element is automatically generated by MyBatis Generator, do not modify.
        -->
        update myuser
        set UserName = #{username,jdbcType=VARCHAR},
          CreateTime = #{createtime,jdbcType=TIMESTAMP}
        where ID = #{id,jdbcType=TINYINT}
      </update>
      
      
       <!-- 设置 参数类型为Map  则可以通过 Map<String,Object>
                      进行参数化 传值,
                      同时 parameterType 也可以设置为具体的 JaveBean类型 如上面方法进行查询传值
        -->
      
        <select id="selectUser" parameterType="Map" resultMap="BaseResultMap">
           select 
        <include refid="Base_Column_List" />
        from myuser
        where ID = #{id,jdbcType=TINYINT} And UserName=#{UserName}
      </select>
      
      
    </mapper>

    测试代码:

    private static SqlSessionFactory sqlSessionFactory = null;  
    	static{
    		try {
    			InputStream  is= org.apache.ibatis.io.Resources.getResourceAsStream("SqlMapConfig.xml");
    			sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
    	
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		}
    		
    	}
    	
    	
    
    	/**
    	 *  添加数据
    	 */
    	
    	public  static  void testInsert()
    	{
    		SqlSession session=sqlSessionFactory.openSession();
    		MyUser user=new  MyUser();
    		user.setCreatetime(new Date());
    		user.setUsername("RHYTHMK");
    		session.insert("insert",user);
    		session.commit();
    		
    	}
    	
    	/**
    	 *  查询数据
    	 */
    	public static void testSelectOne()
    	{
    		SqlSession session=sqlSessionFactory.openSession();
    		try {
    			MyUser user=session.selectOne("selectByPrimaryKey",1);
    			System.out.printf(user.getUsername());
    		} catch (Exception e) {
    			// TODO: handle exception
    		   e.printStackTrace();
    		}finally{
    			session.close();
    		}
    	}
    	
    	/**
    	 *  修改数据
    	 */
    	public static void  testUpdate()
    	{
    		SqlSession session=sqlSessionFactory.openSession();
    		MyUser user=new  MyUser();
    		user.setCreatetime(new Date());
    		user.setUsername("RHYTHMK_update");
    		user.setId(Byte.parseByte("1"));
    		session.insert("updateByPrimaryKeySelective",user);
    		session.commit();
    	}
    	
    	public static void  testSelectByMap()
    	{
    		Map<String,Object> map=new  HashMap<String, Object>();
    	    map.put("id", "2");
    		map.put("UserName", "wangk2");
    		SqlSession session=sqlSessionFactory.openSession();
    		MyUser user=(MyUser)session.selectOne("selectUser", map) ;
    		System.out.println("testSelect:"+user.getId().toString());
    		
    		
    	}
    	
    

      

     相关代码:

    http://pan.baidu.com/s/1raUGs

  • 相关阅读:
    GitLab 内存使用优化
    记一次 GitLab 的迁移过程
    MAC 最全快捷键
    IDEA中通过Java调用Python脚本报错
    远程服务调用PRC发展史
    分布式&微服务传送门
    (11)MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)
    不懂物理的前端不是好的游戏开发者(一)—— 物理引擎基础
    京东购物小程序 | Taro3 项目分包实践
    浅谈树模型与集成学习-从决策树到GBDT
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3428427.html
Copyright © 2011-2022 走看看