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

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

 
     使用mybatis的话,每个Dao就对于一个相应的xml文件,我来给个例子个大家看,先要配置好环境。在application.xml里面
<!-- c3p0 connection pool configuration 数据库的配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass}" /><!-- 数据库驱动 -->
<property name="jdbcUrl" value="${jdbc.url}" /><!-- 连接URL串 -->
<property name="user" value="${jdbc.user}" /><!-- 连接用户名 -->
<property name="password" value="${jdbc.password}" /><!-- 连接密码 -->
<property name="initialPoolSize" value="${jdbc.initialPoolSize}" /><!-- 初始化连接池时连接数量为5个 -->
<property name="minPoolSize" value="${jdbc.minPoolSize}" /><!-- 允许最小连接数量为5个 -->
<property name="maxPoolSize" value="${jdbc.maxPoolSize}" /><!-- 允许最大连接数量为20个 -->
<property name="numHelperThreads" value="20" /><!-- 允许最大连接数量为20个 -->
<property name="maxStatements" value="100" /><!-- 允许连接池最大生成100个PreparedStatement对象 -->
<property name="maxIdleTime" value="3600" /><!-- 连接有效时间,连接超过3600秒未使用,则该连接丢弃 -->
<property name="acquireIncrement" value="2" /><!-- 连接用完时,一次产生的新连接步进值为2 -->
<property name="acquireRetryAttempts" value="5" /><!-- 获取连接失败后再尝试10次,再失败则返回DAOException异常 -->
<property name="acquireRetryDelay" value="600" /><!-- 获取下一次连接时最短间隔600毫秒,有助于提高性能 -->
<property name="testConnectionOnCheckin" value="true" /><!-- 检查连接的有效性,此处小弟不是很懂什么意思 -->
<property name="idleConnectionTestPeriod" value="1200" /><!-- 每个1200秒检查连接对象状态 -->
<property name="checkoutTimeout" value="10000" /><!-- 获取新连接的超时时间为10000毫秒 -->
</bean>

<!-- 创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!--创建数据映射器,数据映射器必须为接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="annotationClass" value="org.springframework.stereotype.Repository" />
<property name="basePackage" value="com.shishuo.studio.dao" />
</bean>

然后我在dao层写个类

package com.shishuo.studio.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.shishuo.studio.entity.TagSkill;
import com.shishuo.studio.entity.vo.TagSkillVo;
@Repository
public interface TagSkillDao {
/**
 * 增加
 *
 * @param tagSkill
 * @return
 */
public int addTagSkill(TagSkill tagSkill);

/**
 * 删除
 *
 * @param skillId
 * @return
 */
public int deleteTagSkill(@Param("skillId") long skillId);

/**
 *
 * 通过SkillId修改名字
 */
public int updateNameBySkillId(@Param("skillId") long skillId,
@Param("name") String name);

/**
 * 通过Id查询
 *
 * @param skillId
 * @return
 */
public TagSkillVo getTagSkillByTagId(@Param("skillId") long skillId);

/**
 * 通过名字查询
 *
 * @param name
 * @param rows
 * @return
 */
public TagSkillVo getTagSkillByName(@Param("name") String name);

/**
 * 通过userId得到所有所有自己的技能
 *
 * @param userId
 * @return
 */
public List<TagSkillVo> getTagSkillListByUserId(@Param("userId") long userId);
}

然后再就是对应的XML文件 TagSkill.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.shishuo.studio.dao.TagSkillDao">

<!-- ############################## -->
<!-- ######         增加                   ###### -->
<!-- ############################## -->

<insert id="addTagSkill" parameterType="com.shishuo.studio.entity.TagSkill">
insert into tag_skill
(name,content,status,createTime)
values
(#{name},#{content},#{status},#{createTime})
<selectKey resultType="long" keyProperty="skillId">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>

<!-- ############################## -->
<!-- ######         删除                   ###### -->
<!-- ############################## -->

<delete id="deleteTagSkill" parameterType="Long">
delete from tag_skill where skillId=#{skillId}
</delete>

<!-- ############################## -->
<!-- ######         修改                   ###### -->
<!-- ############################## -->

<update id="updateNameBySkillId">
    update tag_skill set name=#{name} where skillId=#{skillId}
</update>
<!-- ############################## -->
<!-- ######         查询                   ###### -->
<!-- ############################## -->

<select id="getTagSkillByTagId" parameterType="Long"
resultType="com.shishuo.studio.entity.vo.TagSkillVo">
select * from tag_skill where skillId=#{skillId}
</select>

<select id="getTagSkillByName"
resultType="com.shishuo.studio.entity.vo.TagSkillVo">
select * from tag_skill where name=#{name}
</select>

<select id="getTagSkillListByUserId"
    resultType="com.shishuo.studio.entity.vo.TagSkillVo">
    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};
</select>
</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文件里面

<delete id="deleteTagSkill" parameterType="Long">
    delete from tag_skill where skillId=#{skillId}
</delete>
public int deleteTagSkill(@Param("skillId") long skillId);

这个#{skillId}就相当于我们函数里面的参数skillId,其它的增删改查都类似。
这些都是一些基本的用法,不知道讲明白了没有,如果不懂的加我QQ:2657607916

                      
(0)

相关推荐

  • spring与mybatis整合详解

    spring与mybatis整合详解 在数据库dbmis中创建student表: 建立Maven项目,创建Dao层,POJO层,Controller层,并配置Mapper.applicationCon ...

  • MyBatis xml foreach循环语句

    MyBatis很好的支持批量插入,使用foreach即可满足 首先创建DAO方法: package com.youkeda.comment.dao; import com.youkeda.commen ...

  • mybatis in 查询使用String做条件

    在使用 mybaits 进行 in 查询时 如果传入参数是List或者Array,则直接用foreach 如果参数是String类型的使用in (${xxxx}),不进行编译,直接放进查询条件 例如 ...

  • 110_SSM框架

    目录 需求分析->功能设计->数据库设计 环境要求 环境 要求 数据库环境 基本环境搭建 创建maven项目 pom.xml添加依赖,添加资源导出 idea连接数据库 提交项目到Git 创 ...

  • 针灸入门,快速学习进针方法,初学者必看

    针灸入门,快速学习进针方法,初学者必看

  • 行书快速学习法,练好这些字根可举一反三

    行书快速学习的方法有很多种,包括本号已介绍的偏旁部首同类的练习,而对于独体字,则可以结合字根练习进行补充,字根练习可以可举一反三,带好一批字,这样一来有助于行书的快速学习提升!

  • 升级大脑,快速学习,书写人生的无限可能。...

    升级大脑,快速学习,书写人生的无限可能.人的大脑充满了神秘,还有很多我们不了解或者知之甚少的区域,如果能对大脑的了解更多一点,我们也将因此变得大不同! 学习力本质上还是大脑的开发,如何专注,如何阅读, ...

  • 如何快速学习岗位的某一项特殊能力?

    回复「转行礼包」送新媒体运营大礼包 近段时间,元气森林无糖"人设"崩塌,风口浪尖上的乳茶,在文案上玩文字游戏,让大家误以为"0蔗糖=无糖",网友们表示:&quo ...

  • 行书快速学习法,练好这些字根可举一反三,字根很重要,打出来练

    行书快速学习法,练好这些字根可举一反三,字根很重要,打出来练 北斗读书2020-05-27 15:58:37 行书快速学习的方法有很多种,包括昨天已介绍的偏旁部首同类的练习,而对于独体字,则可以结合字 ...

  • 快速学习SOLIDWORKS, 从入门到精通(实战案例视频版)

    SOLIDWORKS 是世界上第一套基于Windows 系统开发的三维CAD 软件.该软件以参数化特征造型为基础,具有功能强大.易学易用等特点,是当前非常优秀的中高端三维CAD 软件之一. SOLID ...

  • 天睿:想要快速学习,这两款思维模型提高你10倍学习效率

    天睿每日一篇文章的目的   让每篇文章都能解决一个你人生成长的障碍 今天是天睿持续第224天坚持每日一篇文章 昨天又进行了一次线上分享. 这是第7次线上分享. 本次分享主题是如何提高自己的学习力? 即 ...

  • 如何快速学习单反数码相机的基础操作

    单反相机是摄影中都是以专业着称,单反相机既然以专业着称那么必定不是一朝一夕就能学会的,在单反相机上有很多专业的按钮,虽然入门级单反相机专为初学者学习用的,但入门级单反相机对于初学者来说学习起来还是比较 ...

  • 【掌握快速学习的方法】快速学会新领域和新...

    [掌握快速学习的方法] 快速学会新领域和新业务的方法. 1⃣️可以先找到该领域评价最高.系统性最强的几本书,高强度泛读,梳理出核心概念.主要观点.框架逻辑. 2⃣️再通过精读,修正这些核心概念之间的关 ...