MyBites

好久没碰web,现在重新写个小项目,把用到的点都罗列出来。
1、与数据库对应的bean,要有一个默认的构造方法。
2、动态sql:基于OGNL表达式,就像jsp页面显示元素参数一样,可在参数为多个、有无传值做出不同的反应。
例如:if、 where、trim、foreach等
3、代码生成工具(网上有很多文章,但基本都是复制的,复制也就算了,TM的连字母都复制错,测试半天都不行......):
本次使用 mybatis-generator-core-1.3.2.jar和mysql-connector-java-5.1.36.jar,如图:

然后在cmd中,直接运行即可:
      ->java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite

 附(配置文件):
<?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>
	<!-- 数据库驱动包位置 -->
	<classPathEntry location="F:\MyGenerator\mysql-connector-java-5.1.36.jar" /> 
	<context id="DB2Tables" targetRuntime="MyBatis3">
		<commentGenerator>
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!-- 数据库链接URL、用户名、密码 -->
		 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mytest?characterEncoding=utf8" userId="root" password="123"> 
		<!--<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="msa" password="msa">-->
		</jdbcConnection>
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- 生成模型的包名和位置 -->
		<javaModelGenerator targetPackage="liu.model" targetProject="F:\MyGenerator\src">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- 生成的映射文件包名和位置 -->
		<sqlMapGenerator targetPackage="liu.mapping" targetProject="F:\MyGenerator\src">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>
		<!-- 生成DAO的包名和位置 -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="liu.dao" targetProject="F:\MyGenerator\src">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		<!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
		<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
	</context>
</generatorConfiguration>
 
4、常见的配置:

例如User的配置如下:

<mapper namespace="com.liu.dao.UserDao">  
     <!-- mybsits_config中配置的alias类别名,也可直接配置resultType为类路劲 -->    
    <select id="findUser" parameterType="String" resultType="com.liu.model.User">  
    <![CDATA[ 
        select * from user where name=#{name}
    ]]>
    </select> 
    <!-- 只有一个参数的时候 -->
    <select id="findNum" parameterType="String" resultType="int">  
     <![CDATA[ 
        select userId from user where name='aa'
     ]]>
    </select>  
    <!-- 有多个参数的时候,注意参数为Map<String,Object>,里面存储对应的参数名key和值 -->
     <select id="findNum2" resultType="int">  
     <![CDATA[ 
        select count(userId) from user where 1=1
     ]]>
     <if test="name != null">
	    	AND name = #{name, jdbcType=VARCHAR}
	 </if>
    </select>  
    
    <resultMap type="com.liu.model.User" id="userMap">
		<id column="userId" property="userId"/>
		<result column="name" property="name"/>
		<result column="qq" property="qq"/>
		<result column="phone" property="phone"/>
	</resultMap>
    <select id="getAllUser" resultMap="userMap">
		select * from user
	</select>
    
    <insert id="insert" parameterType="com.liu.model.User" flushCache="true">  
        insert into user (userId, name, qq, phone) values (#{userId,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{qq,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR})  
    </insert>  
    <insert id="insert2" parameterType="com.liu.model.User" flushCache="true">  
        insert into user  
        <trim prefix="(" suffix=")" suffixOverrides=",">  
            userId, name, qq, phone,  
        </trim>  
        <trim prefix="values (" suffix=")" suffixOverrides=",">  
            #{userId,jdbcType=INTEGER},  
            #{name,jdbcType=VARCHAR},  
            #{qq,jdbcType=VARCHAR},  
            #{phone,jdbcType=VARCHAR},  
        </trim>  
    </insert>
    <update id="update" parameterType="com.liu.model.User">
		update user
		<trim prefix="set" suffixOverrides=",">
			<if test="name!=null">name=#{name},</if>
			<if test="qq!=null">qq=#{qq},</if>
			<if test="phone!=null">phone=#{phone},</if>
		</trim>
		where userId=#{userId}
	</update>
    <delete id="delete" parameterType="int">  
        delete from user where userId=#{userId}  
    </delete>  
      
    <!-- <insert id="save" parameterType="User">  
        insert into t_user(user_name,user_age) values(#{userName},#{age})  
    </insert>  
      
    <update id="update" parameterType="User">  
        update t_user set user_name=#{userName},user_age=#{age} where user_id=#{id}  
    </update>  
      
    <delete id="delete" parameterType="int">  
        delete from t_user where user_id=#{id}  
    </delete>  
      
    <select id="findAll" resultType="User">  
        select user_id id,user_name userName,user_age age from t_user  
    </select>  --> 
      
</mapper> 

 

<mapper namespace="com.liu.dao.LoginDao">  
    <select id="login"  resultType="com.liu.model.User">  
    <![CDATA[ 
        select * from user where userName=#{0} AND password = #{1}
    ]]>
    </select> 
     <!-- 1、参数为Map<String,Object>();2、使用@Param注解,所以加起上面的总共三种传参数方式 -->
    <select id="login2"  resultType="com.liu.model.User">  
    <![CDATA[ 
        select * from user where userName=#{name,jdbcType=VARCHAR} AND password = #{password,jdbcType=VARCHAR}
    ]]>
    </select> 
      
</mapper> 

 

 

附(配置中所用到的类型对照):

JDBC Type			Java Type
CHAR				String
VARCHAR				String
LONGVARCHAR			String
NUMERIC				java.math.BigDecimal
DECIMAL				java.math.BigDecimal
BIT				    boolean
BOOLEAN				boolean
TINYINT				byte
SMALLINT			short
INTEGER				int
BIGINT				long
REAL				float
FLOAT				double
DOUBLE				double
BINARY				byte[]
VARBINARY			byte[]
LONGVARBINARY		byte[]
DATE				java.sql.Date
TIME				java.sql.Time
TIMESTAMP			java.sql.Timestamp
CLOB				Clob
BLOB				Blob
ARRAY				Array
DISTINCT			mapping of underlying type
STRUCT				Struct
REF	                Ref
DATALINK			java.net.URL

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值