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

简介: 如何快速学习使用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


相关文章
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
79 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
Java 关系型数据库 数据库连接
mybatis-plus学习
MyBatis-Plus ,MyBatis 最佳搭档,只做增强不做改变,为简化开发、提高效率而生。
47 5
|
3月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
3月前
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
3月前
|
Java 数据库连接 测试技术
后端框架的学习----mybatis框架(8、lombok)
这篇文章介绍了如何在MyBatis框架中使用lombok库来简化Java实体类的编写,包括在IDEA中安装Lombok插件、在项目中导入lombok依赖以及在实体类上使用Lombok提供的注解。
|
3月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
3月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
111 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
312 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个