首页 技术 正文
技术 2022年11月22日
0 收藏 410 点赞 4,481 浏览 39280 个字

在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数;如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能。

比如在表的关联关系中,将数据插入主表之后需要再插入子表,我们需要把主表的主键作为外键插入子表中。

这样的话就需要获取主键值了。

所以涉及主键返回的问题。

1.自增主键的返回

针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下配置:

通过mysql函数LAST_INSERT_ID()获取到刚刚插入的记录的自增主键。

LAST_INSERT_ID(),在insert之调用此函数。

<insert id="insertSelective" parameterType="com.winner.User">
<!--
将插入数据的主键返回,插入到user对象中。
SELECT LAST_INSERT_ID():得到刚刚insert进去记录的主键值,只适用于自增主键。
keyProperty:将查询到的主键值设置到parameterType指定的对象的哪个属性上。
order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序。
resultType:指定SELECT LAST_INSERT_ID()的结果类型
-->
<!--
在insert into之前
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="userName != null">
user_name,
</if>
<if test="sex != null">
sex,
</if>
<if test="addUid != null">
add_uid,
</if>
<if test="addTime != null">
add_time,
</if>
<if test="updateUid != null">
update_uid,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="delFlag != null">
del_flag,
</if>
<if test="remark != null">
remark,
</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="sex != null">
#{sex,jdbcType=INTEGER},
</if>
<if test="addUid != null">
#{addUid,jdbcType=INTEGER},
</if>
<if test="addTime != null">
#{addTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUid != null">
#{updateUid,jdbcType=INTEGER},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
#{delFlag,jdbcType=TINYINT},
</if>
<if test="remark != null">
#{remark,jdbcType=VARCHAR},
</if>
</trim>
</insert>

可以看到,这里生成的user对象并没有设置id属性的值,默认是0,mapper文件中的selectKey 的设置会使得user对象的id的值是数据库中对应的记录的主键id的值。

当然是插入操作完成之后才有这个值。

aaarticlea/png;base64,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” alt=”” />

对于自增主键还有一种方式

<insert id="insertSelective" parameterType="com.winner.User" 
useGeneratedKeys
="true" keyProperty="id">
insert into user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="userName != null">
user_name,
</if>
<if test="sex != null">
sex,
</if>
<if test="addUid != null">
add_uid,
</if>
<if test="addTime != null">
add_time,
</if>
<if test="updateUid != null">
update_uid,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="delFlag != null">
del_flag,
</if>
<if test="remark != null">
remark,
</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="sex != null">
#{sex,jdbcType=INTEGER},
</if>
<if test="addUid != null">
#{addUid,jdbcType=INTEGER},
</if>
<if test="addTime != null">
#{addTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUid != null">
#{updateUid,jdbcType=INTEGER},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
#{delFlag,jdbcType=TINYINT},
</if>
<if test="remark != null">
#{remark,jdbcType=VARCHAR},
</if>
</trim>
</insert>

useGeneratedKeys 要求数据库本身具备主键自动增长的功能,比如说,mysql,sqlserver可以使用useGeneratedKeys =true 这功能,不支持主键自动增长的数据库是不能使用useGeneratedKeys =true的。

不过还是喜欢用selectKey子节点来做,oracle就不支持useGeneratedKeys!

2.非自增主键返回

使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位。

执行思路:

先通过uuid()查询到主键,将主键输入到sql语句中。

执行uuid()语句顺序相对于insert语句之前执行。

<insert id="insertSelective" parameterType="com.winner.User">
<!--
使用mysql的uuid()函数生成主键,将主键设置到user对象的id属性中。
其次在执行insert语句时,从user对象中取出id属性的值。
注意,这样的话insert语句中就需要包括id字段和id属性。
-->
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT uuid()
</selectKey>
insert into user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="userName != null">
user_name,
</if>
<if test="sex != null">
sex,
</if>
<if test="addUid != null">
add_uid,
</if>
<if test="addTime != null">
add_time,
</if>
<if test="updateUid != null">
update_uid,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="delFlag != null">
del_flag,
</if>
<if test="remark != null">
remark,
</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="sex != null">
#{sex,jdbcType=INTEGER},
</if>
<if test="addUid != null">
#{addUid,jdbcType=INTEGER},
</if>
<if test="addTime != null">
#{addTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUid != null">
#{updateUid,jdbcType=INTEGER},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
#{delFlag,jdbcType=TINYINT},
</if>
<if test="remark != null">
#{remark,jdbcType=VARCHAR},
</if>
</trim>
</insert>

注意,这种情况下,表的id字段类型必须是varchar类型,不能自增,长度必须大于35.

可以看到,这里生成的user对象并没有设置id的值,默认是null,mapper文件中的selectKey 的设置会使得user对象的id的值是数据库中对应的记录的主键id的值。

但是在插入操作之前这个值就有了。

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAt4AAACKCAIAAAASdtrAAAAgAElEQVR4nO2d/VsT17r3959zlPeXhGRIJkGtQBLeEpJAEEiwGpKAIEndCiUhWBUUsBX6YkVaESgKnGt3n+5WQq1auvfjOa3tdZ4+PVtrX9w/bXvtPs+1Ee3VH/ZVnx/WzGTNzJrJBAOJeuf6/JDcWa/3zKz1zb3WTH6nM5RlIJQr9Dja7qGNaW/J8wNlD0RCngrwOQAAAJAO/u3f/g29+V3amwIAAAAAAADSBAAAAACADAKkCQAAAAAAGQRIEwAAAAAAMgiQJgAAAAAAZBAgTQAAAAAAyCBAmgAAAAAAkEGkUppcfaMtIWnvMAAAAAAAmQxIEyD1UPaB2dhc2C58aBsVmIjNDdg252Fum1r48wNFO8NzsfGAUjei9CsrK8qzPFc8n6clRXeMx2IrEq9YbMIncsgmOUrqfJYao0S9SJTmuTy+id1u8gQjoVbTxt3yvEsTinb4I5Gg20LRDj/flZTJE0zFQ1EpkycYiQywr6DbIkxgDwwMDPjFE7nJE4xEuPR4OVxisbHCHYpEAuJLhblEIwOzcwM22ii+6ig789UTOLNjPBabjTifUJpw41oMK4SyD8yygx1xFhQUTgUmBOMgsQSyMd4A4RiK0s9GnIlaHs/om4iP0VwLZbojXwXXNWEuklEmu+QMIS1NiL2zReZiEx0yPVVSCCEZ6x/uHLBF5gQzHHIR8WwRI5Wd6HOpo0N0XQJ/btXUhQ6cwAlbPHFKzeW2yJzM+fyETZUXEE+XNMEl3Ya1/lYedFsgEgk4cEuFOxQJecorUypNZmdnl0ivmZkZJWU9ldLEHkCe3SRpIhYKtkCEs1C0pTUUiYQC/lBEIE0o2tIaCgVDjDRBEgql4QQp0YiqEAsdnaHMN7HJ0iQwwc1SkgkSVYGGEmbWCUyg4R5dsehaVaJ7xBVRdMc4TxawxRKMzvAcM8f4JmJ4jyjaGZ6bm50j6wapjL4JYXpivYqriMXmJsax0ZZo3PAhkBzKFfRO3FOFhYiSYYeb1GD+wRKeLYlPVFmfS51s5JYk9OfWSpPxCaFA33JpQjgEG5YmXEyOHH2JD2WSx31jUUDm6G+tNOGdeNiVkmyntvKgU/YAPsGhGY04+yQLT5q4214kSpNWd8ZJilRR4Q5hc3+KpQn3ZzQoLhKJBPyBiN9urHCHcKVJPJyoYbZARNw87j3RiHdKgG9iLhzYRGmScABSJE2waYO7AvHWSo0XXOFoppEZUIgJyEZ+g1EHE07Agozy6QX1KqmCODApGYITekZpORK9U+IZJScDT2WS2syFaohnS8Kq8UiP2OfEk035OaO8m6mF7X5cq21l7WwbkpYm3FdsU5NTEjKV8t3yNEgTxSNwBkkT7OexjvmFTIjZbwDhgs65yUmBLnn73DmFZW0gakJZ2u+NhgbRyIK993ijj8fGHo+NPea+pZtWR0eR8Z63Wmcoo+jqi9HRVVfT6uio+C8A5eO3HAqlSYU7hBZNsICHw8+upLAlIIXh8EciSJGg6AV3tPiSQk5pclVz0kTHBsoqaEtrKLGRKE34p5ScNOG8F18NwSKN7AiOLo+O8VgMXQnxUYY3YfBWnWOiKoTxeX7ohZswbJE5buSKj7ykwlFHwhO81or6LlqpIRnxuZbzj5IJWDBhywX8sXoVVqFQmhAOWSLPCA6rVGCZa56ga/I9lXGRoKkiaSLuFxbJIJ0t4r5LnflEn4tPNqLrpPwpdc4TvI1fKdj7DVyAVr2D0fH2gVlSzEm8SsW4IsDYxwNGbnFK6tBw/lEyunJISRPeyc/9tODHtJ4QqfNZEHhDCZZnx8+yyWJzA1Z9YDw2F46wC3bsmSZ1fAUepmiyTJRfmpRYe8KLjddOPLWInuSFirFOKf8tIXlwsTUd7lc3rlHEcyX/Jzcb+Of/raxQmtRZ6wXSpMZqU9jEVEkT3MieCk2ro9GLFtRPpEiM6M1jfsoNuDWhNBErQX64ghEWzOoM73gEbLQRUz+W1hDSKMwbtjSeNME/4tIE2XF5JGUURGUkrlhJaSIeGvi/I7lIBlrb5m2qEEgTwcXmm4gllPOCX7TYZMOEdgWDtbhwfNcFcfWHOPELVQg7WLMeiE+QMrpBnFHYNVH3BR1MWIUgpZSRfMgSeYZLHMMnDNFmHbxqYlOJPZX2LbNFSZCGm1xXRBs+cIErPluIfSdml/I54WQjuY5sTOacJ08eG7oA8b7YInPMSigeSpzAljuxyxO/agSxKHlPyiOegONzOXvIcMkiCMXJLw0rR+p8FkgTohsZ/8R9Ind8yR7md0rJeuuKYCcT+cApippISxNhp57Iw/Hf3vGZS/yDXIdNbXEFYw8EQyGBXkEQtsGOvfoqp0tGR8eUNxGJj49f98hQShtxtGbvjyPBqN6Av9fqXZ+OjPw2MjBtNjDJGoO/jY7i/Li/Squvmh4Y+bTRIChTOeWtwbDfzlSht/vCwZbKeGnaSndP0F2uN2j1dl84HMa+1db7I/xXT6tZqze3BMO+egNWoN+qN5S3BpGRs3Bv2JS8jHirrP5wT6tZ0DxtpbsnHGypNBCNgoxSaPWBM8uz/fVYf+sjM7MRq96g1QfOLC8vY99q/eMx/msm7NDqHf2zy2f8bI3h2eXxQLyo5fF2vUHrH1+ejcR7yv9Ibph/nCunlDa2jy/PhB14a7X1kZnl2f56ycIFdlQCXiBevoyRsc9GrHoD3juuQOSoWCy2zPcknlHe53i9yqsQeJ5oJB8ykmdQFSvsNlKRxCEMgvh0S5Qm2DqI5B5VXEoS93BwvwvDE1iQQ9A8UtSEyyv+TS/ILtjDS1jQwVQI3kiuooRG+ei63OSBh3ZIPZI5Usx0O9EhXpFkvEpQHqRlLGlPJgUxaiJYv+BLRnL8YANIeUkUNSG6UaDMCGeCQg/LrzqJ3YULOFKxTyhNhJ16Mg+zP87xSAknTeyBAf4r6LZw39oCoVaTw88E/nmhAYI02fFC+eLi4tLS0sLCwo4XymXatGFNEB9PSdKEHWqrpgcYgaJtDP424HULB3o5aWINz4qHZkKy+NzP0weltFFb7w8H3eV8AYEEiuArPAEmTcwtwWBLpYGTGuWt/p6g36o3aOv9nPgQZETvBbon7LcLakTNJhpL+eJG0vOi6U040+sd/bOMQCFKCnEJ8QlVgTSROkB4Gq4K8pwqJU1YjSVoVWmSuoRVBrMv2+z9s8uC1kplwTMK9IrAiNeLeqqwCoXShHDIpD1DLEc8srODUXx0k5cmsiNafP6Tm7z5Y7pwByspBCK3i0W0N0X8g54sOPjzqJzxiaUJPkfGpF0kLyKZyNMEPksRg5oJpAmx8SlZ0PFN8M4Q8Ryfkg0TWyZNiB7m+o6LYCXe48SZxIGTkybknVibJk10bJwej9bj0iQi2rJJMUIEEyV24c5O8s3D4cjA0tJSfzgi1RTiiBmbcCdEOA6a939/KnLBbCilja37Iv861TOgN2jN+y80oJmp6kLk1PUGg1bfeP3UqesNzJA60NMzoDdw38rPwfKUt/QcbDFz7/v7feykWN/e34++0la2NrO6obmnv73egL5tZ+cYq89n1Ru4b/HC+331yB4Ohw+2mMtbesLhcH9PKy5rxBk5rL54Gw729zRXxtvWXm8gGgWdksHaP/PRR2e8TH/9r3300cV+eylt1NaHX/YxYZ6XZz56zWdA377mY1roPXPGqzdw3+IFciVc/AiliWdE6T+aCSeImmDFan1nUHptffjiRzMv18ebKmgVXjh6j7Vk5uV6nlFQl9BYH754xh93kajB3jPCLDIZtXr/a6zRe4bQQiJSVYhdJGWUOWQCz4gL75+5cuVMPJYTD4BjY6s4akLRHeNYBIK8Ck4qhH9jQkeYP0wLpI/gI28iiS9eCELuhDVHMfzlSHySjq+eCBJIGAX3WSRc0InfHc25Ooxl57YXCHqUML7F/PgWhabiFSWUJtKeTIpNvXk4QbFsACl+1pEWdJKQJhLHl+hh5hDPTYwrUAD41UFUh9iBk7nDn3BOSh90sjTBt4BwW0kEN+Pw0ps8wUgoiIU9+As68e0KtgBTQoU7FAwxUga9F+yPJEsTumznW2fP0mU7xY0QDZQGSs/w0WutCeESc7S82P/ryZO/njx5p7v7znB3WEdTekO4exgZf+1uQMk0lfvuDDPGq06a0hs0OvNU/zB6v2F2N3d3NVdyH2vb+15mX0R7X7uNaU95S1cfY/RaUXsq93T3ofd4xr7ult06ciNRlpexlzg714zdzd3iZFJGvPEy7D/9wZ/Y17t99WL7B6d9TFOtL7/7AWMca0f9re+98AF6z7S27wIqRGN9+d0PTu/X0ZTeoGk/zRT1wYXevtMfXHi5VsIbcbewdX3AFoIK55rKVSpVuEbnGxO0lk0ZT2+liUa8LrwBuHNwX/GOFyljvJFc8yTqTVgF8jmed6ydJhqJh4zoGXEVfdMfvvraa1euXFleXr5y5Uy7nomgiPdm6gRbNLBVGKk5hlgI9hST+Mgr/kFJXBoX5BUYV4TPsJGcIQTbYLlftOKn3SQ2xp90MheOJNjdydU1OzHBJYhvKObmKsIm1gTShDdx4i5lK0ooTaQ8mSwblib4k3KIL969/SQPc/dUC846mQgEJ+mYbbCiWZx8fEke5nqhUHWJTzypYnHdKXAXcSVI4qCnSJowT8GIhz1EizvkJ3KJn3zBkdwj13BRwo5ltFaH0P/HWHNCNKX6jKKkdt/hfXWbXcUR7HX4wJ5dlG5Ta6zed/jF2s2tgtzTfSN/GNm/9fUCqUKr06PLmdIzqgW/5Dc2LQHMWJzoqT/PEsolhcy9VM+Mh5O6qR5AbFCasKJErynVl1C6Eqq0RFuqfgpRaardoZDP+ULaW5Iqypz+UMhj1lDpcGbb8cuX3wjVpN0JwMYo0ZaWUKUllA7JFCRQQJqkBFtkDp7l/xx6OLX3Qj8/JCFNcF2i1dFIlKi1lEqjLS7RFqs1RQAAPM0UqzXFJVqVRqvWUqxAAXUCABsERY8yUDBlPklLExQv0ZTqH//udwAAPHsUFquL1BqVRltClWpKebGTtA9YAAA8DyiVJvyQib6E0qV9AAUAYDPIKyjKL1IVqUpUGm0JpdPq9BA4AQBgK1EkTfj349CaUr1aS6FRLDe/MDs3Pysnd3tObhYiNy+bIR8AgMwmLzs3Lys3D1286KLOzs3PzS/ML1IVqTVqLYUCJ6U0qBMAALaI5KQJ2mVSQulUGi03im3Pzt2WlbMtK3tbds52njpJ+7ALAIA8jC7ZnpO7LTsHXdTbs3Ozc/PzCooKi9Vs4AR2nAAAsHVsTJqUFpdo0CiWlcPqkqzs7dk5WTl52bn5OXkFOXkFOfkFOfkFufmFAABkGujyRJdqdm5+Vk7edlaabMvKycrJzc0vLChSFZdoSqhSkCYAAGwlG5Am+hJtabGakSbbc3LjuiQ3LyevILegMK+wKL+wOL8IAIDMprA4r7Aot6AwJ68gKzePlSbZ23Nyc/IK8ouKi9WaEm0pbDcBAGArSVqaaEr1am1pkRqLmmTnMLokvyC/sLigWFWoUhepSjZw7+ILOw2v9zb+8dSeT15r+eS1lj+e3HPmcMMLOw1pv6kSAJ5NVCWFKnVBsSq/sDgnv4CRJtk5WUiaFBYXqTVqLbpPB6QJAABbRAqkyfbs3KycvJy8grzCosJidbFao9Jo1ck/8qs/YL95tu2vS7//cfn4vZWheytDPy4f/+vS7//zbFt/wJ72p1EBwDOIhlJptMVqTWGxOq+wiNtrAtIEAIA08sTSJDcvKyc3Ozc/t6CwoEhVrNaoNehhTck9KH2w2/nNtPfvV0/8dP2kgL9fPfHNtHew2ynIUmJ6s2ri1m6TsKKSpv+wHntTt8kPg5enxGreG6wwpLUNzwAllLEqaLNblboRpX9xoF55lucK0mmpK6F0ag1VrNYUFKm43xtocRakCQAAaeFJpQna4Y9CJseOHa8wWbCHSMb/iUOeGkv5N++++POnQ//vs1OI8yd8h/wNtxb60cefPx365t0Xa6vKef9DZjlX8+bX5RZhFZrmj+qHz9GJ/kOO/Mdyuh01h+xOd2XLocoy5o/iyp2Ddu9Rx/7BupoK9j/SKipbBu3eow7vUYeznvQfafVV+9kS0EeUeP9gVQUqllQC2RhvAJM3XktFZcugvcW9Q6IvhIwVAaZ871EH10KZ7shXwXVNmItklMlO7F38cBA9TOpdmbtuf6BcpqdKCiEkY/3DnQNl7jqucARyEfFsESOVnehzqaNDdF0Cf7KnJePY1srmlyoNlA7dc1eoUnO/N7LZ9VmQJgAAbD0pkCbZ7A+s8fHxycnJY8dPlO3aTekNpbQBfxaCDO+dcN//8MiDP5/keHFPXWwyiFvuf3jk0kmPktK0LTH7qSmDXlHVYkydjgaPufWweYfeoNXvrDvsaPXsLKWNWnuN95Uak96g1Vc0vOJosBtKaaPWZG59xVZnEv2zvL3Ge9i8Q28QvGe+1Vc0cN+azK1csQTjzrrDNSa9ATXM21mBFbKz7rCtlW2esAESGU2dwvTEehVX4fAermk4zHhDyih5pESeIVYhLkdJ78Q9VViIKBl2uEkN5h8s4dmS+HSV9bnUyUZuSUJ/YgkqOx0NHlPL703GUr2mVKfWUEWqEt5FnV+QXwTSBACANPDk0iSf+4E1MTFx/vz5ixcvzs7O/v7wkYSDMsett93rq8ce/vkE4tKYv81VEz3Y9L8Xeznj+uqxL88pkyatHztG3tm4NDlgq3OY3UfMO/QGrcnsPsZMG1r9zrojzkaHQauvaDzGzhDYe14bHDXtR1hxc4SQgDdBihKQjWyZ6OOONpu7bafpgNPdJjcBCzLKpxfUq6QKzi0JjUo6rqRwhb1T4hkp30p9RWzzjjZb+4GKUtpIPFsSVs1lJ/qceLIpP2dkfWWrc5hbD5uMOpq9qHFpgp66BtIEAIA0kBJpwoxir7/++tTU1MzMzPz8/OXLl2dmZ1taFYmJuxda1j87iuNxVV+f6hYYv73Qwhtnq9+pO/fxTmYmGKg699A5+QhBlCbW8GyM/5oJOxLPWNi0wU0YO9ps7UfMO/Q7647E5z+tvqLxmNN3vAHRzombI+a6A4xdPFlq9RWNx4Q/r4lGfK5Fxe7QG5RMwIIJm2meqHxBvQqrUChNcOcwk24iz2DlxPOKJ3uueYKuyfdUxkWCpoqkibhfrHSQOFvEfSdml/K5+GQjuk7Kn8TTEmuDQf6iBmkCAMDWs4nSZHFxcXFxMRg6lLAR373b8nA1itPmqrkx1SUwfvtOC56LqnnXOnl1F22k6Gj15KNqNzNi7oo8co6+a0zFALpzb72vq5L7aO5q8OzdpTOUUfQua2+D/0Sj73itmTbqDGUUXek63uByGrmUvl7LTtpIOWv9JxqRnTJbPMfrrWZew7gypYyU2eI53sAVwtWOPhKzS2UUdq3XspMmN0ZhFYKUUkaKrnSxHee+SugZLnHcyc7a+HtS74hNJfZU2reVruO8QlAapp1Ym5lvnbVc4cSzhdh3YnYpnxNONpLryEaJ01Kn+KIGaQIAwNazidJkfn7e39GhpBG33mpav9b38EY/R5ur+sb5Dtyyfq3vy7NNeK64NHFfxbWI4OOTQDlrE0w22MSAz3/cR4FdMHeauxrw8mWMOmxewadATExUuo6jCYygfsRzM94Lcb3Kq1AkTZy1/hONOJ69u4ieEVQhkjiEuvDeEaUJ11MlLhK0StB+X6/F2iXZd/LZQuo7Mbu0zxOcbFxFCY34R5AmAABkLJsiTd57771INKo3KB3F5o81/fS+f/3aEY62xqrr53y45af3/QtDLjxXstLEFplb4b9mI075hhF/1CY1B1Bmi0dCmiSlS3TsLFVn2ol+Q+NIZcEzCiZjgRGvl/uZrqQKhdKEMN9Le0ayHHJd8Y7ISxMlLiI2lZ+MCV0wXcA/KjhbhB6IR93IPiefbCTXkY0gTQAAeApJvTQZGztdbjInNYrZasrvTDrWVoLrV18isrYSvDPpsNWU47mICzoUvdc0mrIFHXwu5KmNeIieCZjjkXNmGQIlpndZe9lfwPEwe9woqEtoNFs8eCRDeglG2HJSRoqudGG/y8UtJJKiBR18WaHWLOEZYuG8WM7xWjM6BCS38IINop4qdVH8OFZa+R0XB714Sz/Es4XU94SOjXeEfLIlOKmICzr4aakDaQIAQAaTSmkyOjpqszvYUSy5G2ROdFu/P2//55WuBysHBfxzuev78/YT3VbhHkl8G2zrx8wG2HO3Kw880R06wlpMZvcxp2A35Y42G7evkNsUqXXUsPsubXVt+N5J4S5OLmU8vclANOJ1EbdzyuxRJWaMN5JrnkS9CatAe0LxvI0OA9GIu5HnMZFniFU0HqgRd4TYO95uVlFPlbqIf8TxHuF+0JrMbpGviGcLue+k7ESfk082kuvIRonTkgW2wQIAkHGk8ubhInUJO4rRyUqTUto4dND617fq/r7g+edHHWvLB9aWD/zzo46/L3j++lbdie66J1QYAACQMFB6uHkYAIDMIpWPXCtSlag1lKZUx/6FetKxk1rLC/NHbf95pvavb1Z/80bNf75aNxetr7W8kO7hGwCePQwoZKLV0fDINQAAMopUPqi+UKVWabQbeFA9AABbDk3paa2O1pTq4UH1AABkFJny934AAKQD+Hs/AAAyjieWJjm527Nzs3LYwEmxulitUWm0ag2V/j98BwBAHg2l0miL1ZrCYnVeYRG6qLdn52bl5II0AQAgXaRAmmzLztmenZPFRoALilWFKnWRqqRIrQEAIKNRlRSq1AXFqvzC4pz8AnRRb8vOAWkCAEAaSVqaaHX6Em1pMStNAAB4xtiWlb0dSZOi4mK1pkRbqtWBNAEAYOvYgDShS6jS4hKQJgDwbLItKycrJzc3v7CgSFVcoimhStl77kCaAACwFWxMmuhUGm1hsTqvoCg7N397du62rJxtWdnbsnO25+SiPXTo0QgAAGQ2eWgn+/ac3G3ZOduysrdl5WzPzs3Ozc8rKCosZu65A2kCAMBWkpw0wR7QRBWpNflFqtz8wuzcfDS0ZfF0yUakiU6rHvBVnT1cM9NfN9Nfd/b3NWGvRadVp3v4BoBnlTxOnXBXcTbzvDVVkVqj1lIa0UMU0z5sAQDwbKNImujE200onUqjLVKV5Bep8gqKcvMLc/IK4uQX5OQX5OYXJoXPVT4ftf3pzIsfTx68er7n6vmejycP/unMi5eiNp+rPNnSAABICLpU8Ys3N78wr6Aov0hVpCphQyaw0QQAgC1FqTTRseoEPaxJU6ovoUpVGm2RWlNYrC4oUuUXFecXshQlTVer6cOTDX+ZDv2vmUMC/jId+vBkQ1eraQPFPnvkFZZWdpQ7OiuI2DvKdCL/5+0us+/Vqzd0XIDnAuzKLShSFRari9QalUZbQjH/O8FJk7QPWAAAPA8kLU24HSeaUn0JpVNrKZVGW1yiLVZrhoaGX6gwbeAOxt27DFfHGv578fDX/96HOPX7Zl9L9YdvdqGP/714+OpYQ/kLhk26hbJQtXOk68h3R7pGyuL3PBdWvfhdV6Mt3XdBF6qo3T5zlb3M5ivTihqjtVfY7FSCEswvuEh5n7Bq4NmjWK0pLtGqNFq1lsIe6wwhEwAAtpQkpImOr04oPa3V6ZFAKaFKS7SlU1NTU1NT0cGjtHFHUs99eru/8X8udf/4YYSj2W5afNWPW/7nUvf5iGuTHjyl0pRPvDTwR7//p5daG9iHxamsvI9pZNe+WqvrhYauF/SixuhdlgYXnaB3NZWtorwqDW3qqnX31RHh0stUDTx7lGhLS6hSVpTw4iWgSwAA2DI2KE1YdYIECkI/w76mp6d7giHlT8teHd/z91jk/koUceHEvmaHua/DeXMmxBn/Hot8NtG8SY/rLqFMb/ceW7ab3u499n88JsZoP/Cgt20Plf4n7pf7aqqsFXuCFQZRYwzNNXuajcRc3FclVvPeYIWBMlYFbXZrct2RqRp49tDq9Ohy5v79Cr/k0z5aAQDwnJCcNNHx1Ql7zw7DPP91YXp6T3Orkn8a++b8nv97bQCntcGy8nanwPjN+T14Lk3lvjvD3WEdLXjf8mL/rydP/nry5K/ct7qGq8PDyHjnRTOlN2h05qn+4avOhqvDw7/272suNU31D1910prKfXeGh686aUpv0Di7f+3f1xIvnymB+VbXcHW4f8rJ2K86aY2zG6+CWK+A2r4Lf+K/3u2rT+pP2srcdS3uHWK7RlfuHKyqQI2vr9p/qLJMR2sqKltYIwDIIP7P8LQPVQAAPD8kLU0QxL9Zv0x6HewJJfx/9jtTe9auR3DcDdWfTHYKjH89vwfPpTXv//5Uz4DegL/HjUwyfeP1U5ELZkMpbdTqqy5ETl1vMKA3/+Kys/ZS2ti6L4Ls2oaef0X2t+oNWn3VhZ79rShlQw/zrb7x+qlTTIKGnn+NjPyrp5HXElK9CV2hhB0eW/sxJxFvZwWXptWzk/GAvcZ72LxDbyiljaZOB5cGAJSQ9kEKAIDnjQ1KE4RgCFvkv+bn5/0dHUrGvi/edD34pHf9+sscnsaq65MB3PLgk95bb7nwXFqz98eRYJSRJsx7rd716cjIbyMD02ZGB2gbg7+NjuL8uL9Kq6+aHhj5tJFNg31E738LurSNwd8GvG5W5bj3DzAlxCtiaiG+J9ab8mljR5vN3bZTYNSazO4jjBYppY1aR007+1Grr2g85mx0pEYkAc82aR+eAAB4PnkiaSJgaWlpaWlpcXFxYWFhYHBQb1A6Ar73iuv+H3wPPjnM4WmwXHu7Hbfc/4Pv8olGPBdRmjBfIXnBSQRMYeAJiNKELW3k0yCTEX1EwoKvgRJJE1G9Aqzh2Rj/NRN2JDV5EKWJ6YCtzoTFjTBpgrLgHwGgFFQIAACZROqlyRtvvGmqqk4qo62m/P937VoAABKsSURBVM6kY20luH71JSJrK8E7kw5bTTmei7K03xuNXrQYdYYyjzf6eDQ0SBspS/tFl1FnKKPo6ovR0VWXkaKbVkdHV13M4DsYCg3SRu5bpij+R6bAsbHH0XYPbaRcIfSGVxHdtMrWTnxPrDflx2/n3nrP3l3yaShnra/XshOmHwAAAOBpIJXSZGZmpqm5dWN5hw7afphyrC13r3/cI2At1v3DlGPooE2cixEQY2P3QqF7o8zcPxgaRcbHoSaUjLK03xtljKt84cIkEEkTZGGkCXrPryihNCHWm3I2LE3MXQ3+E40y+LoqN6PBAAAAACBPKqXJEzLcY7t91np/sW3tSueDWNeDWNfalc77i223z1qHDlrT3rwMQbmkoOhK13EmcUL5AgAAAAAZQgZJE52hrK5q98Kx+i8m6r49W3P7rdovzljnj9rrqnanvWEAAAAAAGwNmSVNAAAAAAB4zgFpAgAAAABABgHSBAAAAACADAKkCQAAAAAAGQRIEwAAAAAAMgiQJgAAAAAAZBAgTQAAAAAAyCAyS5rUVVcujbV/NR34/tKB7y8d+OpC4PKIt64aHksKAAAAAM8LGSRNhg81353v+PmTo48+H//l1uu/3Hr90efjP39y9Lv5juFDzWlvHgAAAAAAW0CmSJPhQ3v+ttD58ObpXz4/I+DhzdN/W+gcPrRHkEX8xzeMHfvbPynwf7qRTIP9qx8AAAAAAFtDKqXJ1NQ7dfWODWS01pjuznrXb448+q/TiOlTHb2dTV//IYo+rt8cuTvrtdXyVnaeDWlC0Q5/JBJ0Wyja0hqKDLCvSCRgS1HVlMkTjMRLDrotwgT2wMDAgN8er84WwFoS8lSwLRGnFBsr3CFi4ynaGZ6LjUcGZucG0LcU3TEei62srKysrIwHNthZKjARYwvcuIsCE4I2UPaB2URtE+fyTTBZVlZWiK0iVMQ6IRabC9vFTuO+nfBhpYnLkcq4srISm+gQG1FevMGCxPKukGo2sWHIyPVCfCYAAADgpFKaLC0tLS0tjZ1+dVd5crtDLg23/WO579HNEY79LdarUy/hln8s9y2O7MVzSUkTKfD0GSRN7IFIwKEzlCFpwk3wRBHA7w4vvRRioWALRDgLKiQSCvj5RdkCEYGCIaaUyU5smG8iPiGhuQ3NYRTtDM/xpl5+1c7wXExGHzyJNEGFx+YmxrEqeG2zD8yKRAMxF+rgbMSZTEXO8ByThQpMCPUH5hbfRAyJBqmqBT7hyYjAxGzEKeNwiu4Yj5H9T9Ed45yUtA/MYtpC0GyphhEPEH4mbOzAAQDwDJN6abK0tLSwsHCkt095xi/PeR5+dvzRX4YQl08H9jbVDvbs+XqpjzM+/Oz4V5NteK5nQ5pUuENIBIilBmXyBKVjJ0qkCWUPoJgHEjqRSMAfiPjtxgp3COkhqaLE0kSmUrGR65QA38RcOMBKE7vSmWlTpQmxCoruGGflCP4+YcNkpAm5InayT7abMolxCcI/GSQdLiNNRI2fC9uNMs0mfSR4Dz8TnuTAAQDwTLIp0gS95t57r9XdpiTjd9OtD//8Ck5bU82Ndw4KjHenW/FcrNRoWh0dfTw29nhsjJEdlvZ7o6FB2shLMBD6gk32ONru1rtWR6MXvSHGEmpiy4yXhlIiaUJZ2u9htaCS73mrmVwkEWOLzAlC5cRJS06aYBZ8UcZvN6JlIHzBBbdwsgBFLziJQ9EOfyTUakJvAtg8R5AmxHWlJ5Qm/FzSMyi2fMBbmJBYIolxWoebL+O/7zvGY3PhyITMIdCRZnpbZC42N2DDwgNKcnHrIzFeS+Jzs3DmDkzgCyhI2RDjNALRIydNJLSalMN1SUgTJhmx2eQO2gdm5wbCrFvkdRsAAABiE6UJegVDhxJm/O7dloerUZw2V82NqS6B8dt3WvBcSB88Hg0NojnAFULvBdIknkAYNRlFioTbm4KMXBhmMDSKBAdFV18MsRqFqwWTI4OhJII3Arj4hIw0oWhLa4DZ8EHZAxFGZ2DChdUc/FyM/uCrHy6vnDThqHCHeHtNFEsTPCojBVp3wFcxKNoZnmCXD/grBQnDCdLShF0KIU358XoFyxC0MzxH2OQhnyt+WBllY5SXJrbInLw04YSacPdG8tKE6HC2NEXShJMgxGYTG4YvLcn4HwAAAGcTpcmlS5cCnZ1KMt56q2n9Wt/DG/0cba7qG+c7cMv6tb4vzzbhuQQLOtxHUdREmEDHX9Ch6OqL0ehFi1EQ/BB89HijTCiFKZwpgaKbVln1kyz4FC4hTRjBgRLjkQyeNLEHBvivoNuCSxNMwXDhE0XSBBc9UimJRqklITEovIRPdVzAKUXShFuaIS8u6MQTKp4rGUGDfUVeBlISNSF20zcRU7qgk2iFS+xwJdKE2+wi32xCB7HGJFzwAgAA0G2SNFlcXIwePUoblWacP9b00/v+9WtHONoaq66f8+GWn973Lwy58FxbJk3Qag5avuEK1xnKPN7oPW+1xxvl1oNwFC7oyEVNuJ0iJk8wwiaLr87wpAke22D7yygbTgBVuANBFDVh995iKVMpTRRGTbASmLUGFCRg9lfyN11KSRPuF3wqpYmyCTU10iR+v5KsAuMXuIGqiQ7HPspJE1yXyDebuKAD0gQAgKRIvTR54403TVXVSWW01ZTfmXSsrQTXr75EZG0leGfSYaspx3Mx6zWsLPB4o8QFnSSkCbagwxSOpAkmWbhadEimREOr0QTbaeWR2mtC2QMRbo0GUx7cHTeiBZ14XluAiYggicDdlhx0W1DoRaBjhFXTDj8rLGyByMYWdBLvNbEPzPJuap0L2434nGeLzCWMmvBuFcHCG1jeDUkTfElFbouGKNbC9ogLciTYa4J95Id/2N2mbIHcChGxHOEFFZnD7+ll7tAhORz7KHWHDmG3DbHZMh0UHyAAAAAZUilNZmZmmppbN5Z36KDthynH2nL3+sc9AtZi3T9MOYYO2gRZGKkRCuHrLDqDeBtsfChkFmW4bbB8aaJDkRKmtOhFbyi+1yTK7IG9Fwrdw5ZvuP0oG3aaQJqQnyaCfRUMBLjbdnCdIdgny5Uv0BYiH/Iq5fJyK0RcXmJKqexKpImOH1jCbmplt0xOTHBREGYNgr9OgfacEleCuLwJpQleI94ScduU5Io/wIN3w+1c2G6UzMLuJiHunBWsbclULWwh2xLcRVKdkpMmWDkr2FNMCM2W6mAqnl4DAMBzRaY8DVZnKBvusd0+a72/2LZ2pfNBrOtBrGvtSuf9xbbbZ61DB61pbx6RwVD8Pp2NIVhb2QwEO1FklEqqkHquCQAAAAAkJIOkic5QVle1e+FY/RcTdd+erbn9Vu0XZ6zzR+11VbvT3jAi+L6TjRfCPg027d1JFVJPgwUAAAAAJWSWNHmKGAyNck9SAQAAAAAgVYA0AQAAAAAggwBpAgAAAABABgHSBAAAAACADAKkCQAAAAAAGQRIEwAAAAAAMgiQJgAAAAAAZBCZJU3qqiuXxtq/mg58f+nA95cOfHUhcHnEW1ddmfaGAQAAAACwNWSQNBk+1Hx3vuPnT44++nz8l1uv/3Lr9Uefj//8ydHv5juGDzWnvXkAAAAAAGwBmSJNhg/t+dtC58Obp3/5/IyAhzdP/22hc/jQnrQ7CwAAAACAzSaV0mRq6p26+o38HYy1xnR31rt+c+TRf51GTJ/q6O1s+voPUfRx/ebI3VmvrTZtKzsUvcva2+Daa/H0WnZy/7rnrPWfaHQ5jTJpAAAAAABIilRKk6WlpaWlpbHTr+4qT05DXBpu+8dy36ObIxz7W6xXp17CLf9Y7lsc2ZtGT5m74rIDqRBfb62rt4GTJoI0aT+0AAAAAPA0knppsrS0tLCwcKS3T3nGL895Hn52/NFfhhCXTwf2NtUO9uz5eqmPMz787PhXk21p9JS5q97q5EdNUJiEJ02EaQAAAAAASIpNkSboNffee61uRWLiu+nWh39+BaetqebGOwcFxrvTrYKMHm/08djY47Gxx+w/AFN00+roKDLe81YzadhvB0Ojj0NNgkJskbkV/ms24lTSbLE0AQAAAADgCdlEaYJewdChhBm/e7fl4WoUp81Vc2OqS2D89p0WPBdlab/Hag7GQjetjkYvWpBGqb4YHUX/DDwYGr3nraZcocfRdk/q4hkgTQAAAAAg5WyiNLl06VKgs1NJxltvNa1f63t4o5+jzVV943wHblm/1vflWV7AgwmQsFpEZyijXCEmiMKCAifilCkBpAkAAAAApJxNkSaLi4vRo0dpo9KM88eafnrfv37tCEdbY9X1cz7c8tP7/oUhlzgvio4g2SEVF5GXJrCgAwAAAACZQ+qlyRtvvGmqqk4qo62m/M6kY20luH71JSJrK8E7kw5bTTmei7K0X3Tx1m6QBEGLODpD2WAovsXknrfa443Cgg4AAAAAZDiplCYzMzNNzcKdqgoZOmj7Ycqxtty9/nGPgLVY9w9TjqGDNnGuwRCz45Xb3EpZ2u+x22C5jSZIkTDxFdE22A2ARIn/RCMHCBQAAAAASAmZ8jRYnaFsuMd2+6z1/mLb2pXOB7GuB7GutSud9xfbbp+1Dh20pr15AAAAAABsARkkTXSGsrqq3QvH6r+YqPv2bM3tt2q/OGOdP2qvq9qd9oYBAAAAALA1ZJY0AQAAAADgOQekCQAAAAAAGQRIEwAAAAAAMgiQJgAAAAAAZBAgTQAAAAAAyCBAmgAAAAAAkEGANAEAAAAAIIPILGlSV125NNb+1XTg+0sHvr904KsLgcsj3rrqyrQ3DAAAAACArSGDpMnwoea78x0/f3L00efjv9x6/Zdbrz/6fPznT45+N98xfKg57c0DAAAAAGALyBRpMnxoz98WOh/ePP3L52cEPLx5+m8LncOH9mygWMn/IpawZwKU2eLpqtQx/9RTa5ZoJEVXuo7DnwsCAAAAzxqplCZTU+/U1Ts2kNFaY7o7612/OfLov04jpk919HY2ff2HKPq4fnPk7qzXVpv0yk4mSxPmj4v3Wjy9lp1YS2SkibmL95+CYnxdlVLFAgAAAMBTQSqlydLS0tLS0tjpV3eVJ6chLg23/WO579HNEY79LdarUy/hln8s9y2O7E22SZksTXSGMnOXUmli7koiQEIsFgAAAACeClIvTZaWlhYWFo709inP+OU5z8PPjj/6yxDi8unA3qbawZ49Xy/1ccaHnx3/arIt2SZlvDSptzoZDbFzbz0e/NDFpUml63iDZ+8upuVmi+c4IXbiO15vNRvFxaa3gwAAAACQLJsiTdBr7r33Wt2KxMR3060P//wKTltTzY13DgqMd6dbBRkpS/u90dHHY2OPx8ZWXcw0TNFNq6zx8dgYJ0GIdoquvhgdXXU1rY6OspZ4snvealSmxxtlco2GBmkj0YJji8yt8F+zEadCN/KjJg245sC/5WWhd1l7eckAAAAA4CllE6UJegVDhxJm/O7dloerUZw2V82NqS6B8dt3WvBcFF19McTKDlcISQQkLDiZMhjiCQ6SvfpidJSTFxTdtDoavWgxMuVHR1ddRsrSfo+vP8SWFCK/DVZJ1AQAAAAAnl42UZpcunQp0NmpJOOtt5rWr/U9vNHP0eaqvnG+A7esX+v78myTOK8geiFYqeE+StpZ/RG3c2EVNnDCxFFYyaLjAjCYJYUkliZs1IRy1qKFHoiaAAAAAM8MmyJNFhcXo0eP0kalGeePNf30vn/92hGOtsaq6+d8uOWn9/0LQy48F1rNQWsuXBgjBdJEYg8KG1/BBYrQwrHhBR3KWSvaa2LUiRQJk4CVJgAAAADwzJB6afLGG2+aqqqTymirKb8z6VhbCa5ffYnI2krwzqTDVlOO58JlhMcbFS/oMNJBtKDDt/OliXDdJzRIGylL+0WXcIlHYHly76HnlPi6KolRE85o7mrwHa81m3ftpI1ImnAZ034yAQAAAMCTk0ppMjMz09Qs3KmqkKGDth+mHGvL3esf9whYi3X/MOUYOmgTZGEUBlp2CYW4zR/xRZnR6EVvXL4Q7WJtQdxaOxhi98+GmqQsTwh3ezBZmjhrPXt3mbsa8DAJHjVB4RZ4AhsAAADwtJMpT4PVGcqGe2y3z1rvL7atXel8EOt6EOtau9J5f7Ht9lnr0EFr2pu3ZeBrN9wdxcL7dNC6D2x9BQAAAJ45Mkia6AxldVW7F47VfzFR9+3Zmttv1X5xxjp/1F5XtTvtDQMAAAAAYGvILGkCAAAAAMBzDkgTAAAAAAAyCJAmAAAAAABkECBNAAAAAADIIECaAAAAAACQQYA0AQAAAAAggwBpAgAAAABABgHSBAAAAACADAKkCQAAAAAAGQRIEwAAAAAAMgiQJgAAAAAAZBAgTQAAAAAAyCA4afL/Acynel5v+ifaAAAAAElFTkSuQmCC” alt=”” />

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,076
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,400
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,812
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,894