mybatis sql复用,软更新,取别名,properties

mybatis sql复用,软更新,取别名,properties


取别名:我们在在写mapper.xml的时候 resultType 的值时通常都需要写类的全称(com.kz.po.Student)这样写一个还好但是写多了就e…相对应来说还是比较麻烦的,所以mybatis就出了一个取别名的配置。
直接上代码

//  在主配置文件(mybatis-config.xml)中的configuration标签里面添加
	<typeAliases>
		// 这一句是给 com.kz.dao.StuDao 类取别名,在mapper.xml 中只需要写 stuDao 就行
		<typeAlias type="com.kz.dao.StuDao" alias="stuDao"></typeAlias>
		//  下面这一段 是吧 com.kz.po 目录下的类全部都加载了,
		//  在mapper.xml中使用时,我们只需要首字母小写就行( stuDao,cardDao )
        <package name="com.kz.po"/>
    </typeAliases>
	// PS: 上面取别名这一块需要注意,只能给类取别名,接口是不行的(dao层)

properties:properties 标签中的配置可以供整个配置文件使用,在任何位置都可以引入其中配置的值。properties 标签可以通过子标签 property 标签来配置一些子元素信息,也可以配置外部的动态文件
不过我们这里就只用最常用的(外部的动态文件),,


第一步 先在resource 目录下 添加文件 mysql.properties 下面的值都是 关于连接 mysql 数据库的信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student?characterEncoding=utf-8
jdbc.username=root
jdbc.password=yjy

第二步 在 configuration 标签里面添加 resource 是指 properties 的文件地址

<properties resource="mysql.properties"></properties>

第三步 获取 properties 中的值

<environments default="development">
   <environment id="development">
       <!-- 事务的类型:jdbc -->
       <transactionManager type="JDBC" />
       <dataSource type="POOLED">
           <property name="driver" value="${jdbc.driver}" />
           <property name="url" value="${jdbc.url}" />
           <property name="username" value="${jdbc.username}" />
           <property name="password" value="${jdbc.password}" />
       </dataSource>
   </environment>
</environments>

properties其实不用也没什么影响,只不过方便管理一些数据,但是统一管理还是很香的


sql 复用 ,直接上代码解释吧

<mapper namespace="com.kz.dao.CardDao">
	<!--  我们可以先在这里声明一个sql片段 -->
    <sql id="column_all">
        card_id , card_name , card_name
    </sql>
    <select id="cardAll" resultType="card" parameterType="card">
        select 
        	<!--  接着到这里去引用,
        	你可能会觉得这样有什么必要呢,直接写不好嘛,e.....
        	可以这样讲,一张表查询肯定不止一个啊...如果很多就,或者字段很多就 -->
            <include refid="column_all"></include>
        from card
        <!-- where 
        		如果里面的if有符合条件的那么就会 在 card后面加上where ,并且还会把第一个条件的 and 给去掉) 
        		如果要是里面的if没有一个符合条件的 那么在 card 后面什么都不会加上 
		   这个标签还是很智能的
-->
        <where>
        	<!--  判断我穿进来的 参数 是否有值 -->
            <if test="card_id != 0  and  card_id != null">
                and card_id = ${card_id}
            </if>
            <!--  同上,只不过这里多了一个的参数多了一些 java 里面的方法,反正就是想说明java里面的方法也是可用的    -->
            <if test="card_name != null  and  card_name.trim().length() > 0 ">
                and card_name = #{card_name}
            </if>
        </where>
    </select>
</mapper>

软更新:就是有参数就 关系没参数就不更新

<update id="cardUpdate" parameterType="card">
    update
        card
    <set>
        <if test="card_name.trim().length() != 0  and  card_name != null">
            card_name = #{card_name} ,
        </if>
        <if test="card_id != 0  and  card_id != null">
            stu_id = #{stu_id} ,
        </if>
    </set>
    where
        card_id = #{ card_id }
</update>

细细品,这一块重点也是使用到 if
修改使用 的是 set

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值