关键词搜索

源码搜索 ×
×

如何快速学习使用mybatis以及总结

发布2015-08-20浏览3508次

详情内容

 

第一步 让我来介绍下初学者怎么快速更好的使用mybatis这个框架 

 
     使用mybatis的话,每个Dao就对于一个相应的xml文件,我来给个例子个大家看,先要配置好环境。在application.xml里面
  1. <!-- c3p0 connection pool configuration 数据库的配置 -->
  2. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  3. destroy-method="close">
  4. <property name="driverClass" value="${jdbc.driverClass}" /> <!-- 数据库驱动 -->
  5. <property name="jdbcUrl" value="${jdbc.url}" /> <!-- 连接URL串 -->
  6. <property name="user" value="${jdbc.user}" /> <!-- 连接用户名 -->
  7. <property name="password" value="${jdbc.password}" /> <!-- 连接密码 -->
  8. <property name="initialPoolSize" value="${jdbc.initialPoolSize}" /> <!-- 初始化连接池时连接数量为5个 -->
  9. <property name="minPoolSize" value="${jdbc.minPoolSize}" /> <!-- 允许最小连接数量为5个 -->
  10. <property name="maxPoolSize" value="${jdbc.maxPoolSize}" /> <!-- 允许最大连接数量为20个 -->
  11. <property name="numHelperThreads" value="https://cdn.jxasp.com:9143/image/20" /> <!-- 允许最大连接数量为20个 -->
  12. <property name="maxStatements" value="100" /> <!-- 允许连接池最大生成100个PreparedStatement对象 -->
  13. <property name="maxIdleTime" value="3600" /> <!-- 连接有效时间,连接超过3600秒未使用,则该连接丢弃 -->
  14. <property name="acquireIncrement" value="https://cdn.jxasp.com:9143/image/2" /> <!-- 连接用完时,一次产生的新连接步进值为2 -->
  15. <property name="acquireRetryAttempts" value="5" /> <!-- 获取连接失败后再尝试10次,再失败则返回DAOException异常 -->
  16. <property name="acquireRetryDelay" value="600" /> <!-- 获取下一次连接时最短间隔600毫秒,有助于提高性能 -->
  17. <property name="testConnectionOnCheckin" value="true" /> <!-- 检查连接的有效性,此处小弟不是很懂什么意思 -->
  18. <property name="idleConnectionTestPeriod" value="1200" /> <!-- 每个1200秒检查连接对象状态 -->
  19. <property name="checkoutTimeout" value="10000" /> <!-- 获取新连接的超时时间为10000毫秒 -->
  20. </bean>
  21. <!-- 创建SqlSessionFactory,同时指定数据源 -->
  22. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  23. <property name="dataSource" ref="dataSource" />
  24. </bean>
  25. <!-- 配置事务管理器 -->
  26. <bean id="transactionManager"
  27. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  28. <property name="dataSource" ref="dataSource" />
  29. </bean>
  30. <!--创建数据映射器,数据映射器必须为接口 -->
  31. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  32. <property name="annotationClass" value="org.springframework.stereotype.Repository" />
  33. <property name="basePackage" value="com.shishuo.studio.dao" />
  34. </bean>

然后我在dao层写个类
 
  1. package com.shishuo.studio.dao;
  2. import java.util.List;
  3. import org.apache.ibatis.annotations.Param;
  4. import org.springframework.stereotype.Repository;
  5. import com.shishuo.studio.entity.TagSkill;
  6. import com.shishuo.studio.entity.vo.TagSkillVo;
  7. @Repository
  8. public interface TagSkillDao {
  9. /**
  10. * 增加
  11. *
  12. * @param tagSkill
  13. * @return
  14. */
  15. public int addTagSkill(TagSkill tagSkill);
  16. /**
  17. * 删除
  18. *
  19. * @param skillId
  20. * @return
  21. */
  22. public int deleteTagSkill(@Param("skillId") long skillId);
  23. /**
  24. *
  25. * 通过SkillId修改名字
  26. */
  27. public int updateNameBySkillId(@Param("skillId") long skillId,
  28. @Param("name") String name);
  29. /**
  30. * 通过Id查询
  31. *
  32. * @param skillId
  33. * @return
  34. */
  35. public TagSkillVo getTagSkillByTagId(@Param("skillId") long skillId);
  36. /**
  37. * 通过名字查询
  38. *
  39. * @param name
  40. * @param rows
  41. * @return
  42. */
  43. public TagSkillVo getTagSkillByName(@Param("name") String name);
  44. /**
  45. * 通过userId得到所有所有自己的技能
  46. *
  47. * @param userId
  48. * @return
  49. */
  50. public List<TagSkillVo> getTagSkillListByUserId(@Param("userId") long userId);
  51. }
然后再就是对应的XML文件 TagSkill.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.shishuo.studio.dao.TagSkillDao">
  4. <!-- ############################## -->
  5. <!-- ###### 增加 ###### -->
  6. <!-- ############################## -->
  7. <insert id="addTagSkill" parameterType="com.shishuo.studio.entity.TagSkill">
  8. insert into tag_skill
  9. (name,content,status,createTime)
  10. values
  11. (#{name},#{content},#{status},#{createTime})
  12. <selectKey resultType="long" keyProperty="skillId">
  13. SELECT LAST_INSERT_ID()
  14. </selectKey>
  15. </insert>
  16. <!-- ############################## -->
  17. <!-- ###### 删除 ###### -->
  18. <!-- ############################## -->
  19. <delete id="deleteTagSkill" parameterType="Long">
  20. delete from tag_skill where skillId=#{skillId}
  21. </delete>
  22. <!-- ############################## -->
  23. <!-- ###### 修改 ###### -->
  24. <!-- ############################## -->
  25. <update id="updateNameBySkillId">
  26. update tag_skill set name=#{name} where skillId=#{skillId}
  27. </update>
  28. <!-- ############################## -->
  29. <!-- ###### 查询 ###### -->
  30. <!-- ############################## -->
  31. <select id="getTagSkillByTagId" parameterType="Long"
  32. resultType="com.shishuo.studio.entity.vo.TagSkillVo">
  33. select * from tag_skill where skillId=#{skillId}
  34. </select>
  35. <select id="getTagSkillByName"
  36. resultType="com.shishuo.studio.entity.vo.TagSkillVo">
  37. select * from tag_skill where name=#{name}
  38. </select>
  39. <select id="getTagSkillListByUserId"
  40. resultType="com.shishuo.studio.entity.vo.TagSkillVo">
  41. SELECT tags.skillId,tags.name,tags.content,tags.status,tags.createTime FROM shishuo.tag_skill tags,shishuo.teacher_skill teas where tags.skillId=teas.tagSkillId and userId=#{userId};
  42. </select>
  43. </mapper>
使用经验

1、要记得在TagSkillDao这个类前添加@Repository这个注解,实体的意思
2、你发现了没有,在xml文件里面的id在那个dao层类里面对应的方法名,然后就是在那个XML文件里面,resultType这个参数里面和对应方法里面的返回数据类型想匹配,记住,如果方法返回是int,记得写Internet,是包装类型,不然会出错的,如果是返回对象的话,或者返回一个对象的集合,resultType里面就要写这个对象,如果是没有返回的可以不需要写,在dao层里面的方法需要传参数的话,需要写parameterType,但是一定要记住是包装类型,不是基本数据类型,在dao层里面的方法如果是要增加,就传一个对象过来,不需要写注解,如果是通过Id删除的话,比如public int deleteTagSkill(@Param("skillId") long skillId);我们在xml文件里面
 
  1. <delete id="deleteTagSkill" parameterType="Long">
  2. delete from tag_skill where skillId=#{skillId}
  3. </delete>
public int deleteTagSkill(@Param("skillId") long skillId);
 这个#{skillId}就相当于我们函数里面的参数skillId,其它的增删改查都类似。
这些都是一些基本的用法,不知道讲明白了没有,如果不懂的加我QQ:2657607916

 

                      

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载