• UID297
  • 登录2017-01-06
  • 粉丝43
  • 关注112
  • 发帖277
  • 主页http://weibo.com/2619518393/
  • 金币1512枚
喜欢达人
社区居民
最爱沙发
忠实会员
原创写手
追星一族
jkxqj 发布于2015-10-27 17:31
3/1497

MyBatis实战系列之(2)

楼层直达
这个项目是对mybatis的进一步学习,包括如下:
1、一对多和单表的增删改查
2、主键策略自增和uuid
3、级联查询 双向配置 1:n和1:1
效果如下:

图片:1.jpg

图片:2.jpg

图片:3.jpg

图片:4.jpg



关键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.ccnu.dao.RoleMapper">
    <resultMap id="BaseResultMap" type="com.ccnu.model.Role">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="role_name" property="roleName" jdbcType="VARCHAR" />
    </resultMap>
      
    <sql id="Base_Column_List">
        id, role_name
    </sql>
      
      
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Integer">
        select
        <include refid="Base_Column_List" />
        from role
        where id = #{id,jdbcType=INTEGER}
    </select>
      
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        delete from role
        where id = #{id,jdbcType=INTEGER}
    </delete>
      
    <insert id="insert" parameterType="com.ccnu.model.Role">
        insert into role (id,
        role_name)
        values (#{id,jdbcType=INTEGER},
        #{roleName,jdbcType=VARCHAR})
    </insert>
      
    <insert id="insertSelective" parameterType="com.ccnu.model.Role">
        insert into role
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="roleName != null">
                role_name,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=INTEGER},
            </if>
            <if test="roleName != null">
                #{roleName,jdbcType=VARCHAR},
            </if>
        </trim>
    </insert>
      
    <update id="updateByPrimaryKeySelective" parameterType="com.ccnu.model.Role">
        update role
        <set>
            <if test="roleName != null">
                role_name = #{roleName,jdbcType=VARCHAR},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
      
    <update id="updateByPrimaryKey" parameterType="com.ccnu.model.Role">
        update role
        set
        role_name = #{roleName,jdbcType=VARCHAR}
        where id =
        #{id,jdbcType=INTEGER}
    </update>
  
    <select id="selectUsers" parameterType="java.lang.String"
        resultType="com.ccnu.model.User">
        select * from user where role_id = #{id,jdbcType=VARCHAR};
    </select>
      
   
  
    <!-- 连接查询配置 -->
    <resultMap type="com.ccnu.model.Role" id="roleResultMap2" extends="BaseResultMap">
        <collection property="users" javaType="list" ofType="com.ccnu.model.User">
            <id property="id" column="userId" />
            <result property="username" column="username" />
            <result property="password" column="password" />
            <result property="realName" column="real_name" />
        </collection>
    </resultMap>
      
    <select id="getRoles" resultMap="roleResultMap2">
        SELECT
        role.id,
        role.role_name,
        `user`.id userId,
        `user`.username,
        `user`.`password`,
        `user`.real_name
        FROM
        role
        left JOIN `user` ON `user`.role_Id = role.id
    </select>
  
  
</mapper>
<?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.ccnu.dao.UserMapper">
      
    <resultMap id="BaseResultMap" type="com.ccnu.model.User">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="username" property="username" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
        <result column="real_name" property="realName" jdbcType="VARCHAR" />
        <result column="role_Id" property="roleId" jdbcType="INTEGER" />
    </resultMap>
      
    <sql id="Base_Column_List">
        id, username, password, real_name, role_Id
    </sql>
      
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Integer">
        select
        <include refid="Base_Column_List" />
        from user
        where id = #{id,jdbcType=INTEGER}
    </select>
      
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        delete from user
        where id = #{id,jdbcType=INTEGER}
    </delete>
      
    <insert id="insert" parameterType="com.ccnu.model.User">
        insert into user (id,
        username, password,
        real_name, role_Id)
        values (#{id,jdbcType=INTEGER},
        #{username,jdbcType=VARCHAR},
        #{password,jdbcType=VARCHAR},
        #{realName,jdbcType=VARCHAR}, #{roleId,jdbcType=INTEGER})
    </insert>
      
    <insert id="insertSelective" useGeneratedKeys="true"
        keyProperty="id" parameterType="com.ccnu.model.User">
        insert into user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="username != null">
                username,
            </if>
            <if test="password != null">
                password,
            </if>
            <if test="realName != null">
                real_name,
            </if>
            <if test="roleId != null">
                role_Id,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=INTEGER},
            </if>
            <if test="username != null">
                #{username,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                #{password,jdbcType=VARCHAR},
            </if>
            <if test="realName != null">
                #{realName,jdbcType=VARCHAR},
            </if>
            <if test="roleId != null">
                #{roleId,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>
      
    <update id="updateByPrimaryKeySelective" parameterType="com.ccnu.model.User">
        update user
        <set>
            <if test="username != null">
                username = #{username,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                password = #{password,jdbcType=VARCHAR},
            </if>
            <if test="realName != null">
                real_name = #{realName,jdbcType=VARCHAR},
            </if>
            <if test="roleId != null">
                role_Id = #{roleId,jdbcType=INTEGER},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
      
      
    <update id="updateByPrimaryKey" parameterType="com.ccnu.model.User">
        update user
        set
        username = #{username,jdbcType=VARCHAR},
        password =
        #{password,jdbcType=VARCHAR},
        real_name = #{realName,jdbcType=VARCHAR},
        role_Id = #{roleId,jdbcType=INTEGER}
        where id = #{id,jdbcType=INTEGER}
    </update>
  
    <resultMap type="com.ccnu.model.User" id="userMap" extends="BaseResultMap">
        <association property="role" javaType="com.ccnu.model.Role">
            <id property="id" column="roleId" />
            <result property="roleName" column="role_name" />
        </association>
    </resultMap>
      
    <select id="getUsers" resultMap="userMap">
        SELECT
        `user`.id,
        `user`.username,
        `user`.`password`,
        `user`.real_name,
        `user`.role_Id,
        role.role_name,
        role.id roleId
        FROM
        `user`
        JOIN role ON `user`.role_Id = role.id
    </select>
      
</mapper>

项目代码如下:http://share.weiyun.com/5133941579abe9868c88b6d46751907e
mybatis-test.zip
欢迎关注我的微信公众号:oldriverNote

0人打赏
  • UID297
  • 登录2017-01-06
  • 粉丝43
  • 关注112
  • 发帖277
  • 主页http://weibo.com/2619518393/
  • 金币1512枚
喜欢达人
社区居民
最爱沙发
忠实会员
原创写手
追星一族
jkxqj 发布于2015-11-05 17:00
沙发F
沙发
欢迎关注我的微信公众号:oldriverNote
  • UID13154
  • 登录2016-08-11
  • 粉丝0
  • 关注0
  • 发帖3
  • 主页
  • 金币19枚
sina_oN1lB14695 发布于2016-07-27 22:56
板凳F
开妹好六
  • UID1690
  • 登录2016-12-30
  • 粉丝1
  • 关注5
  • 发帖92
  • 主页
  • 金币166枚
社区居民
原创写手
lalalala 发布于2016-07-28 11:38
地板F
学习了。。。。。。。
。。(●—●)。。我是萌萌哒的签名挡。。(●—●)。。游戏源码分享(●—●)(●—●)
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 57751/339   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 30996/139   省时省力的Android组件群来了,非常棒的原型参考

  • 30681/187   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 27398/216   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 25743/2   超全!整理常用的iOS第三方资源

  • 23972/70   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 22477/0   Python爬虫:常用浏览器的useragent

  • 21704/137   2016抢红包软件及源码

  • 19619/29   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 19457/25   Android工程师面试题大全

  • 18743/27   2016程序员跳槽全攻略

  • 18665/9   GitHub上排名前50的iOS项目:总有一款你用得着

  • 18201/20   码魂:程序员的牛B漫画

  • 16657/3   吐槽那些程序员的搞笑牛逼注释

  • 15762/146   Android版类似UC浏览器:非常赞,产品级的源码

  • 15472/1   iOS 动画总结

  • 14834/41   一个绚丽的loading动效分析与实现!

  • 14415/10   女程序员的梦,众网友的神回复

  • 14250/11   年会上现场review代码是怎么样的体验!

  • 14243/73   【持续更新中】Android福利贴(二):资料源码大放送

  • 14222/83   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 14147/44   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 13825/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 13679/10   2016年最全的Android面试考题+答案 精编版

  • 13672/23   个人收集的Android 各类功能源代码

  • 12936/19   珍藏多年的素材,灵感搜寻网站

  • 12822/53   基于瀑布流的美女图片浏览App,有注释的源代码

  • 12469/15   基于Android支付宝支付设计和开发方案

  • 12434/17   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 12158/74   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 12141/20   Android福利第三波【Android电子书】

  • 12084/17   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 11621/18   65条最常用正则表达式,你要的都在这里了

  • 11548/94   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 11526/7   用程序员的姿势抢过年的火车票

  • 11501/70   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 11424/7   一张图搞定iOS学习路线,非常全面

  • 11315/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 11075/0   iOS中文版资源库,非常全

  • 10946/10   成为Java顶尖程序员 ,看这11本书就够了

  • 10541/18   一张图搞定Android学习路线,非常全面

  • 10510/10   微信支付终于成功了(安卓,iOS),在此分享

  • 10130/3   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 10057/44   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 10056/29   【持续更新中】Android福利贴(一):资料源码

  • 10040/0   GitHub iOS 库和框架Top100 

  • 9698/4   46 个非常有用的 PHP 代码片段

  • 9337/3   即时通信第三方库

  • 9329/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 9190/8   流媒体视频直播方案

  • 9137/61   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 9055/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 9003/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 8910/9   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 8878/18   八个最优秀的Android Studio插件

  • 8443/6   开箱即用!Android四款系统架构工具

  • 8352/3   一张图看清Linux 内核运行原理

  • 8244/3   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 8229/10   十大技巧快速提升Android应用开发性能

  • 7896/1   Android性能优化视频,文档以及工具

  • 返回顶部