`

mybatis3.0多对多映射

 
阅读更多

mybatis3.0添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作。因此在进行实体类多对多映射表设计时,需要专门建立一个关联对象类对相关实体类的关联关系进行描述。下文将以“User”和“Group"两个实体类之间的多对多关联映射为例进行CRUD操作。

建立user表,对应实体类"User",建表语句如下:
<!--StartFragment-->

Sql代码收藏代码
  1. CREATETABLE`user`(
  2. `id`int(11)NOTNULLauto_increment,
  3. `name`varchar(40)collateutf8_unicode_cidefaultNULL,
  4. `password`varchar(20)collateutf8_unicode_cidefaultNULL,
  5. `createtime`timestampNULLdefaultCURRENT_TIMESTAMP,
  6. PRIMARYKEY(`id`)
  7. )

建立group_info表,对应实体类"Group",建表语句如下:

Sql代码收藏代码
  1. CREATETABLE`group_info`(
  2. `id`int(11)NOTNULLauto_increment,
  3. `name`varchar(40)collateutf8_unicode_cidefaultNULL,
  4. `createdate`timestampNULLdefaultCURRENT_TIMESTAMP,
  5. `state`int(1)default'0'COMMENT'0:可见;1:不可见',
  6. PRIMARYKEY(`id`)
  7. )

建立user_group表,对应实体类"UserGroupLink"(该类为User和Group两个实体类之间的关系描述),建表语句如下:

Sql代码收藏代码
  1. CREATETABLE`user_group`(
  2. `user_id`int(11)defaultNULL,
  3. `group_id`int(11)defaultNULL,
  4. `createdate`timestampNULLdefaultCURRENT_TIMESTAMP,
  5. KEY`FK_user_group_user_id`(`user_id`),
  6. KEY`FK_user_group_group_id`(`group_id`),
  7. CONSTRAINT`FK_user_group_group_id`FOREIGNKEY(`group_id`)REFERENCES`group_info`(`id`),
  8. CONSTRAINT`FK_user_group_user_id`FOREIGNKEY(`user_id`)REFERENCES`user`(`id`)
  9. )

建立实体类User,代码如下:

Java代码收藏代码
  1. packagecom.xxt.ibatis.dbcp.domain;
  2. importjava.util.Date;
  3. importjava.util.List;
  4. /**
  5. *@describe:User实体类
  6. *@author:Nirvana
  7. *@version:V1.02011-3-11下午06:06:49create
  8. */
  9. publicclassUser{
  10. privatelongid;
  11. privateStringname;
  12. privateStringpassword;
  13. privateDatecreateTime;
  14. privateList<Group>group;
  15. publicDategetCreateTime(){
  16. returncreateTime;
  17. }
  18. publicvoidsetCreateTime(DatecreateTime){
  19. this.createTime=createTime;
  20. }
  21. publiclonggetId(){
  22. returnid;
  23. }
  24. publicvoidsetId(longid){
  25. this.id=id;
  26. }
  27. publicStringgetName(){
  28. returnname;
  29. }
  30. publicvoidsetName(Stringname){
  31. this.name=name;
  32. }
  33. publicStringgetPassword(){
  34. returnpassword;
  35. }
  36. publicvoidsetPassword(Stringpassword){
  37. this.password=password;
  38. }
  39. publicList<Group>getGroup(){
  40. returngroup;
  41. }
  42. publicvoidsetGroup(List<Group>group){
  43. this.group=group;
  44. }
  45. }

建立实体类Group,代码如下:

Java代码收藏代码
  1. packagecom.xxt.ibatis.dbcp.domain;
  2. importjava.util.Date;
  3. importjava.util.List;
  4. /**
  5. *@describe:Group实体类
  6. *@author:Nirvana
  7. *@version:V1.02011-3-7下午08:10:29create
  8. */
  9. publicclassGroup{
  10. privatelongid;
  11. privateStringname;//组名
  12. privateDatecreateTime;
  13. privateintstate;//0可见状态1不可见状态
  14. privateList<User>user;
  15. publicDategetCreateTime(){
  16. returncreateTime;
  17. }
  18. publicvoidsetCreateTime(DatecreateTime){
  19. this.createTime=createTime;
  20. }
  21. publiclonggetId(){
  22. returnid;
  23. }
  24. publicvoidsetId(longid){
  25. this.id=id;
  26. }
  27. publicStringgetName(){
  28. returnname;
  29. }
  30. publicvoidsetName(Stringname){
  31. this.name=name;
  32. }
  33. publicintgetState(){
  34. returnstate;
  35. }
  36. publicvoidsetState(intstate){
  37. this.state=state;
  38. }
  39. publicList<User>getUser(){
  40. returnuser;
  41. }
  42. publicvoidsetUser(List<User>user){
  43. this.user=user;
  44. }
  45. }

建立实体类UserGroupLink,用于描述User和Group之间的对应关系,代码如下:

Java代码收藏代码
  1. packagecom.xxt.ibatis.dbcp.domain;
  2. importjava.util.Date;
  3. /**
  4. *@describe:描述User和Group之间的映射关系
  5. *@author:Nirvana
  6. *@version:V1.02011-3-11下午02:57:52create
  7. */
  8. publicclassUserGroupLink{
  9. privateUseruser;
  10. privateGroupgroup;
  11. privateDatecreateTime;
  12. publicDategetCreateTime(){
  13. returncreateTime;
  14. }
  15. publicvoidsetCreateTime(DatecreateTime){
  16. this.createTime=createTime;
  17. }
  18. publicGroupgetGroup(){
  19. returngroup;
  20. }
  21. publicvoidsetGroup(Groupgroup){
  22. this.group=group;
  23. }
  24. publicUsergetUser(){
  25. returnuser;
  26. }
  27. publicvoidsetUser(Useruser){
  28. this.user=user;
  29. }
  30. }

建立user实体类的映射文件user.map.xml,代码如下:

Xml代码收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEmapper
  3. PUBLIC"-//mybatis.org//DTDMapper3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mappernamespace="com.xxt.ibatis.dbcp.domain.User">
  6. <resultMaptype="User"id="userMap">
  7. <idproperty="id"column="id"/>
  8. <resultproperty="name"column="name"/>
  9. <resultproperty="password"column="password"/>
  10. <resultproperty="createTime"column="createtime"/>
  11. </resultMap>
  12. <resultMaptype="User"id="userGroupMap"extends="userMap">
  13. <collectionproperty="groups"ofType="Group">
  14. <idproperty="id"column="goupId"/>
  15. <resultproperty="name"column="groupName"/>
  16. <resultproperty="state"column="state"/>
  17. <resultproperty="createTime"column="groupCreateTime"/>
  18. </collection>
  19. </resultMap>
  20. <!--根据user表中的id查询用户信息-->
  21. <selectid="selectUser"parameterType="long"resultMap="userMap">
  22. select*fromuserwhereid=#{id}
  23. </select>
  24. <!--根据user表中的id查询用户和组信息-->
  25. <selectid="selectUserGroup"parameterType="long"
  26. resultMap="userGroupMap">
  27. selectu.id,u.name,u.password,u.createtime,gi.idas
  28. goupId,gi.nameasgroupName,gi.createdateasgroupCreateTime,
  29. gi.statefromuseruleftjoinuser_groupugonu.id=ug.user_id
  30. leftjoingroup_infogionug.group_id=gi.idwhereu.id=#{id}
  31. </select>
  32. <!--插入用户信息-->
  33. <insertid="saveUser"parameterType="User"keyProperty="id"
  34. useGeneratedKeys="true">
  35. insertintouser(name,password)values(#{name},#{password})
  36. </insert>
  37. <!--保存用户和组之间的关系信息-->
  38. <insertid="saveRelativity"parameterType="UserGroupLink">
  39. insertintouser_group(user_id,group_id)
  40. values(#{user.id},#{group.id})
  41. </insert>
  42. <selectid="selectAllUser"resultMap="userMap">
  43. select*fromuser
  44. </select>
  45. </mapper>

建立group实体类的映射文件group.map.xml,代码如下:

Xml代码收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEmapper
  3. PUBLIC"-//mybatis.org//DTDMapper3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mappernamespace="com.xxt.ibatis.dbcp.domain.Group">
  6. <resultMaptype="Group"id="groupMap">
  7. <idproperty="id"column="id"/>
  8. <resultproperty="name"column="name"/>
  9. <resultproperty="createTime"column="createdate"/>
  10. </resultMap>
  11. <resultMaptype="Group"id="groupUserMap"extends="groupMap">
  12. <collectionproperty="users"ofType="User">
  13. <idproperty="id"column="userId"/>
  14. <resultproperty="name"column="userName"/>
  15. <resultproperty="password"column="password"/>
  16. <resultproperty="createTime"column="userCreateTime"/>
  17. </collection>
  18. </resultMap>
  19. <!--根据Group表中的id或name查询组信息和组内用户信息-->
  20. <selectid="selectGroupUser"parameterType="Group"
  21. resultMap="groupUserMap">
  22. selectu.idasuserId,u.nameasuserName,
  23. u.password,u.createtimeasuserCreateTime,
  24. gi.id,gi.name,gi.createdate,gi.statefromgroup_infogileft
  25. joinuser_groupugongi.id=ug.group_idleftjoinuseruon
  26. uug.user_id=u.id
  27. <where>
  28. <!--当id为初始值0,不再使用id作为查询条件-->
  29. <iftest="id!=0">gi.id=#{id}</if>
  30. <!--当name为空或为空串时,不再使用name作为查询条件-->
  31. <iftest="name!=nullandname!=''">
  32. orgi.name=#{name}
  33. </if>
  34. </where>
  35. </select>
  36. <!--根据id查询group组信息-->
  37. <selectid="selectGroup"parameterType="Date"
  38. resultMap="groupMap">
  39. select*fromgroup_infowhereid=#{group_id}
  40. </select>
  41. <!--根据name查询group组信息-->
  42. <selectid="getGroupByName"parameterType="String"
  43. resultMap="groupMap">
  44. select*fromgroup_infowherename=#{name}
  45. </select>
  46. <!--插入组信息-->
  47. <insertid="saveGroup"parameterType="Group"keyProperty="id"
  48. useGeneratedKeys="true">
  49. insertintogroup_info(name)values(#{name})
  50. </insert>
  51. <!--删除组与组内成员之间的对应关系-->
  52. <deleteid="deleteGroupUser"parameterType="UserGroupLink">
  53. deletefromuser_group
  54. <where>
  55. <iftest="user.id!=0">user_id=#{user.id}</if>
  56. <iftest="group.id!=0">andgroup_id=#{group.id}</if>
  57. </where>
  58. </delete>
  59. <!--根据组id或者组name删除组信息-->
  60. <deleteid="deleteGroup"parameterType="Group">
  61. deletefromgroup_info
  62. <where>
  63. <iftest="id!=0">id=#{id}</if>
  64. <iftest="name!=null||name!=''">andname=#{name}</if>
  65. </where>
  66. </delete>
  67. <!--更新根据组id或者组name更新组状态-->
  68. <updateid="updateGroupState"parameterType="Group">
  69. updategroup_infosetstate=#{state}
  70. <where>
  71. <iftest="id!=0">id=#{id}</if>
  72. <iftest="name!=null||name!=''">andname=#{name}</if>
  73. </where>
  74. </update>
  75. </mapper>

建立ibatis总配置文件salMapConfig.xml,代码如下:

Xml代码收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEconfiguration
  3. PUBLIC"-//mybatis.org//DTDConfig3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <propertiesresource="jdbc.properties"/>
  7. <typeAliases>
  8. <typeAliastype="com.xxt.ibatis.dbcp.domain.User"alias="User"/>
  9. <typeAliastype="com.xxt.ibatis.dbcp.domain.Group"
  10. alias="Group"/>
  11. <typeAliastype="com.xxt.ibatis.dbcp.domain.UserGroupLink"
  12. alias="UserGroupLink"/>
  13. </typeAliases>
  14. <environmentsdefault="development">
  15. <environmentid="development">
  16. <transactionManagertype="JDBC"/>
  17. <dataSourcetype="UNPOOLED">
  18. <propertyname="driver"value="${driver}"/>
  19. <propertyname="url"value="${url}"/>
  20. <propertyname="username"value="${username}"/>
  21. <propertyname="password"value="${password}"/>
  22. </dataSource>
  23. </environment>
  24. </environments>
  25. <mappers>
  26. <mapperresource="com/xxt/ibatis/dbcp/domain/user.map.xml"/>
  27. <mapperresource="com/xxt/ibatis/dbcp/domain/group.map.xml"/>
  28. </mappers>
  29. </configuration>

测试用例,代码如下:

Java代码收藏代码
  1. packagecom.xxt.ibatis.dbcp.test;
  2. importjava.io.Reader;
  3. importjava.text.SimpleDateFormat;
  4. importjava.util.List;
  5. importorg.junit.AfterClass;
  6. importorg.junit.BeforeClass;
  7. importorg.junit.Test;
  8. importorg.apache.ibatis.io.Resources;
  9. importorg.apache.ibatis.session.SqlSession;
  10. importorg.apache.ibatis.session.SqlSessionFactory;
  11. importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
  12. importcom.xxt.ibatis.dbcp.domain.Group;
  13. importcom.xxt.ibatis.dbcp.domain.User;
  14. importcom.xxt.ibatis.dbcp.domain.UserGroupLink;
  15. /**
  16. *@describe:测试用例
  17. *@author:Nirvana
  18. *@version:V1.02011-3-4下午03:21:17create
  19. */
  20. publicclassIbatisUserTest{
  21. privatefinalstaticStringIBATIS_CONFIG_XML="sqlMapConfig.xml";
  22. privatestaticSqlSessionsession;
  23. privateSimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddk:mm:ss");
  24. @BeforeClass
  25. publicstaticvoidsetUpBeforeClass()throwsException{
  26. Readerreader=Resources.getResourceAsReader(IBATIS_CONFIG_XML);//读取ibatis配置文件
  27. SqlSessionFactorysqlMapper=newSqlSessionFactoryBuilder().build(reader);
  28. session=sqlMapper.openSession(true);
  29. session.commit(false);//将默认提交事务属性设置为否
  30. }
  31. //保存用户信息
  32. @Test
  33. publicvoidsaveUserTest(){
  34. Useruser=newUser();
  35. user.setName("张三");
  36. user.setPassword("123456");
  37. session.insert("com.xxt.ibatis.dbcp.domain.User.saveUser",user);
  38. }
  39. //获取用户信息
  40. @Test
  41. publicvoidgetUserTest(){
  42. Useruser=(User)session.selectOne("com.xxt.ibatis.dbcp.domain.User.selectUser",1L);
  43. System.out.println("用户名:"+user.getName());
  44. System.out.println("用户密码:"+user.getPassword());
  45. System.out.println("用户创建日期:"+sdf.format(user.getCreateTime()));
  46. }
  47. //获取用户和用户所在组信息
  48. @Test
  49. publicvoidgetUserAndGroupTest(){
  50. Useruser=(User)session.selectOne("com.xxt.ibatis.dbcp.domain.User.selectUserGroup",4L);
  51. System.out.println(user.getName()+"所属组信息:");
  52. for(Groupgroup:user.getGroups()){
  53. System.out.println("组名:"+group.getName()+",组创建时间:"+sdf.format(group.getCreateTime()));
  54. }
  55. }
  56. //保存用户和用户所在组信息
  57. //当用户所在组不存在时,创建该组,并生成映射关系
  58. @Test
  59. publicvoidsaveUserAndGroupTest(){
  60. Useruser=newUser();
  61. user.setName("无常鬼");
  62. user.setPassword("wuchang");
  63. session.insert("com.xxt.ibatis.dbcp.domain.User.saveUser",user);
  64. GroupgroupImpl=(Group)session.selectOne("com.xxt.ibatis.dbcp.domain.Group.getGroupByName","用户组4");//获取组实例
  65. UserGroupLinkugl=newUserGroupLink();//声明User和Group实体间映射关系实例
  66. //查询到的组实例为空时的逻辑处理
  67. if(groupImpl==null){
  68. Groupgroup=newGroup();
  69. group.setName("用户组4");
  70. session.insert("com.xxt.ibatis.dbcp.domain.Group.saveGroup",group);//持久化创建好的组实例
  71. //设置映射关系实例相关的属性
  72. ugl.setUser(user);
  73. ugl.setGroup(group);
  74. session.insert("com.xxt.ibatis.dbcp.domain.User.saveRelativity",ugl);//持久化映射关系实力
  75. }else{
  76. ugl.setGroup(groupImpl);
  77. ugl.setUser(user);
  78. session.insert("com.xxt.ibatis.dbcp.domain.User.saveRelativity",ugl);
  79. }
  80. }
  81. //删除组信息的同时,取消组内所有的成员与该组的关联关系
  82. @Test
  83. publicvoiddeleteGroupTest(){
  84. Groupgroup=newGroup();
  85. //group.setId(1L);//以组id作为查询条件
  86. group.setName("用户组1");//以组name作为查询条件
  87. GroupgroupImpl=(Group)session.selectOne("com.xxt.ibatis.dbcp.domain.Group.selectGroupUser",group);//获取组实例
  88. //组实例存在时
  89. if(groupImpl!=null){
  90. List<User>users=groupImpl.getUsers();
  91. //查看用户组1中是否存在用户
  92. if(users!=null&&users.size()>0){
  93. //存在用户时,先删除组与用户的对应关系
  94. UserGroupLinkugl=newUserGroupLink();
  95. for(Useruser:users){
  96. ugl.setUser(user);
  97. ugl.setGroup(groupImpl);
  98. session.delete("com.xxt.ibatis.dbcp.domain.Group.deleteGroupUser",ugl);
  99. }
  100. }
  101. //删除组信息
  102. session.delete("com.xxt.ibatis.dbcp.domain.Group.deleteGroup",groupImpl);
  103. }else{
  104. thrownewRuntimeException("查询的组不存在!!");
  105. }
  106. }
  107. //更新组状态,当组状态由可见状态变成不可见时,取消该组下的用户与该组的映射关系
  108. @Test
  109. publicvoidupdateGroupStateTest(){
  110. Groupgroup=newGroup();
  111. group.setName("用户组2");
  112. GroupgroupImpl=(Group)session.selectOne("com.xxt.ibatis.dbcp.domain.Group.selectGroupUser",group);
  113. if(groupImpl!=null){
  114. intstate=groupImpl.getState()==1?0:1;
  115. //组状态由0变成1时,即由可见变为不可见
  116. if(state==1){
  117. List<User>users=groupImpl.getUsers();
  118. //查看用户组2中是否存在用户
  119. if(users!=null&&users.size()>0){
  120. //存在用户时,删除组与用户的对应关系
  121. UserGroupLinkugl=newUserGroupLink();
  122. for(Useruser:users){
  123. ugl.setUser(user);
  124. ugl.setGroup(groupImpl);
  125. session.delete("com.xxt.ibatis.dbcp.domain.Group.deleteGroupUser",ugl);
  126. }
  127. }
  128. }
  129. //更新组状态
  130. groupImpl.setState(state);
  131. }
  132. else{
  133. thrownewRuntimeException("查询的组不存在!!");
  134. }
  135. }
  136. @AfterClass
  137. publicstaticvoidtearDownAfterClass()throwsException{
  138. if(session!=null){
  139. session.commit();//提交事务
  140. session.close();//关闭连接
  141. }
  142. }
  143. }

分享到:
评论
2 楼java-lxm2011-11-02
郁闷,中间表的字段呢
1 楼LanderRooter2011-08-22
楼主,您好,

public class UserGroupLink {

private User user;

private Group group;

private Date createTime;
.....
}

Java代码收藏代码
  1. <resultMaptype="User"id="userMap">
  2. <idproperty="id"column="id"/>
  3. <resultproperty="name"column="name"/>
  4. <resultproperty="password"column="password"/>
  5. <resultproperty="createTime"column="createtime"/>
  6. </resultMap>
  7. <resultMaptype="User"id="userGroupMap"extends="userMap">
  8. <collectionproperty="groups"ofType="Group">
  9. <idproperty="id"column="goupId"/>
  10. <resultproperty="name"column="groupName"/>
  11. <resultproperty="state"column="state"/>
  12. <resultproperty="createTime"column="[b]groupCreateTime[/b]"/>
  13. </collection>
  14. </resultMap>


文章中如上的映射,并没有将UserGroupLink的createDate映射到UserGroupLink,而是把groupCreateTime映射到Group的createTime属性

Java代码收藏代码
  1. <selectid="selectUserGroup"parameterType="long"
  2. resultMap="userGroupMap">
  3. selectu.id,u.name,u.password,u.createtime,gi.idas
  4. goupId,gi.nameasgroupName,gi.createdateas[b]groupCreateTime[/b],
  5. gi.statefromuseruleftjoinuser_groupugonu.id=ug.user_id
  6. leftjoingroup_infogionug.group_id=gi.idwhereu.id=#{id}
  7. </select>




关联对象类UserGroupLink中的createTime属性该如何映射呢,在此例中并没有把UserGroupLink的createTime 映射出来,如果此关联对象类还有boolean enable等属性,可不可以直接将结果映射成UserGroupLink呢?,如何可以的话,该如何映射呢,谢谢。小弟最近在项目中要Mybatis,也遇到类似的case,不是很清楚如何解决,谢谢。
分享到:
评论

相关推荐

    mybatis3.0原理+API注意事项

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...

    MyBatis 3 用户指南中文版 MyBatis 3.0.1

    MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC 代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、 Map 接口和POJO 到数据库...

    mybatis-spring-1.2.2.jar

    这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 ...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    mybatis generator(mybatis 代码生成器,包含doc包,源码包)

    mybatis generator mybatis代码生成器 可以通过数据库生成pojo(model)类,mapper映射xml,以及生成现类的接口.资源里包含该工具所需要的核心jar包,doc包,以及源码包.别外再目录doc&gt;html&gt;index.html中还有...

    MyBatis删除数据.txt

    添加映射—— &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; delete from stu_tbl where id=#{id} &lt;/mapper&gt;

    MyBatis插入数据.txt

    添加映射—— &lt;!... PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; insert into stu_tbl(name,age) values(#{name},#{age}) &lt;/mapper&gt;

    MyBatis3.2.3帮助文档(中文版).zip

    XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。XML 配置文件的详细内容后面...

    MyBatis 简单样例

    DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; &lt;!-- 映射关联的对象 --&gt; &lt;where&gt;userName =#{userName} ...

    MyBatis更新数据.txt

    添加映射—— ... PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; update stu_tbl set name=#{name}, age=#{age} where id=#{id} &lt;/mapper&gt;

    MyBatis参数处理.docx

    DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;&lt;mapper namespace="com.cd.StudentMapper"&gt; select * from stu_tbl where name = #{name} and ...

    mybatis完整的理论知识(.md版本)用Typora查看

    sql 的 动态参数进行映射生成最终执行的 sql 语句, 最后由 mybatis 框架执行 sql 并将结 果映射为 java 对象并返回。 Spring 框架: Spring 框架为了解决软件开发的复杂性而创建的。Spring 使用的是基本的 JavaBean...

    Research-mybatis3.2.8

    ###Research-mybatis3.2.8 ####官方WIKI: MyBatis完成了Java对象到输入参数的映射以及结果集到java对象...DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-conf

    其他类别Nokatag软件标签v3.0-noka3.9.zip

    MyBatis或Hibernate可以简化数据库操作,提供了方便的ORM(对象关系映射)功能,使得数据的持久化变得简单和高效。 通过以上技术选择和框架搭建,该项目可以实现一个高性能、可扩展性强的Web应用程序。开发人员可以...

    基于ssm+mysql+jsp的学生选课系统v3.0.zip

    MyBatis或Hibernate可以简化数据库操作,提供了方便的ORM(对象关系映射)功能,使得数据的持久化变得简单和高效。 通过以上技术选择和框架搭建,该项目可以实现一个高性能、可扩展性强的Web应用程序。开发人员可以...

    web_template:Java Web SpringMVC Mybatis MongoDB的

    dao与mybatis xml映射,与paginate插件集成//2015.04.08-通过查看源代码,此paginate插件使用原始jdbc连接,不建议在生产中使用 springmvc案例展示,带有json,请求参数,标头信息 2015.04.08-使用mongodb java ...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Eclipse开发分布式商城系统+完整视频代码及文档

    ├─补充1:拔高课程(Redis3.0持久化、集群、MySQL5.6优化、Tomcat7优化) │ │ 打开必读.txt │ │ │ ├─课前资料 │ │ ├─MySQL5.6优化 │ │ │ MySql5.6性能优化.docx │ │ │ │ │ ├─Redis集群 │ ...

Global site tag (gtag.js) - Google Analytics