要了解MyBatis的使用,首先要了解MyBatis是因何而来的?为了和数据库进行交互,通常的做法是将SQL语句写在Java代码里,然后生成class文件,而我们知道class文件是无法修改的。假如后来我们只想改变一下SQL语句,那就要重新生成class文件,这样是比较麻烦的。
       所以为了避免SQL语句和Java代码的高度耦合,MyBatis应运而生。它实现了SQL语句和Java代码的分离,方便了后期因需求变动而对SQL语句进行修改!

让我们通过实例来解释如何使用MyBatis

我们先创建一个表user_info

create table user_info(age int(100),name varchar(15) unique,
)
insert into user_info (age, name) values (18, '小明');

然后在resources中创建名为mybatis-config.xml的xml文件,代码如下:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--environments中可以有多个environment,但只能连接一个(通过default)--><environments default="dev"><environment id="dev"><!--配置数据库连接信息--><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="username" value="root"/><property name="password" value="root"/><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/></dataSource></environment></environments><!--注册Mapper xml文件--><mappers><mapper resource="./area.xml"></mapper></mappers>
</configuration>

接着在com.jd.area中创建名为IAreaDao的借口,代码如下:

package com.jd.area;import org.apache.ibatis.annotations.Param;public interface IAreaDao {// 这里的@Param("key")是起限制作用,这样做后,在area.xml中的#{key},这连个key必须保持一致//查询String getName(@Param("age") int id,@Param("name") String name);//删除int delete(@Param("age") int age);//插入int insert();//修改boolean update(@Param("name")String name);
}

然后可在resources中创建名为area.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">
<!--namespace为接口的全名-->
<mapper namespace="com.jd.area.IAreaDao"><!--查询--><select id="getName" resultType="java.lang.String">select name from user_info where age = #{age} and name = #{name}</select><!--删除--><delete id="delete">delete from user_info where age = #{age}</delete><!--添加--><insert id="insert">insert into user_info(name,age) values("小红",23)</insert><!--修改--><update id="update">update user_info set age = 20 where name=#{name}</update>
</mapper>

最后在com.jd.test中创建Test类来调用,代码如下:

package com.jd.test;import com.jd.area.IAreaDao;
import com.jd.person.IPerson;
import com.jd.vo.Person;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;public class Test {public static void main(String[] args) {try {InputStream inputStream =  Resources.getResourceAsStream("./mybatis-config.xml");//获取SqlSessionFactory对象SqlSessionFactory factory =  new SqlSessionFactoryBuilder().build(inputStream);//获取SqlSession对象,代表和数据库的一次会话,用完需要关闭。注意:由于SqlSession为非线程安全的,所以该变量应定义为局部变量,不要定义成全局变量SqlSession sqlSession =  factory.openSession(false);//true:自动提交事务; false(默认值):需手动提交事务//获取IAreaDao的接口实现类(注意,接口实现类由MyBatis代劳完成,调用即可)IAreaDao areaDao = sqlSession.getMapper(IAreaDao.class);//调用方法String name = areaDao.getName(18,"小明");System.out.println(name);System.out.println(areaDao.delete(18));System.out.println(areaDao.update("小明"));System.out.println(areaDao.insert());sqlSession.commit();//手动提交事务sqlSession.close();//释放资源}catch (Exception e){e.printStackTrace();}}
}

MyBatis的使用相关推荐

  1. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  2. MyBatis的插入后获得主键的方式

    需求: 使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法: 在mapper中指定keyProperty属性,示例如下: <insert id=" ...

  3. mybatis使用注解开发

    mybatis使用注解开发 面向接口编程 在之前我们是通过面向对象编程,但是在真正开发的时候我们会选择面向接口编程. 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的 ...

  4. mybatis ResultMap

    ResultMap 解决属性名和字段的名称不一致的问题. 查询为null的问题 创建java实体类: public class User {private int id; //idprivate St ...

  5. mybatis配置文件解析

    mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...

  6. mybatis CRUD操作

    mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...

  7. java mybatis基础

    java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...

  8. mybatis的资源过滤错误及xml文件编码错误

    mybatis 解决maven项目内资源过滤的问题 写的配置文件无法被导出或者生效的问题. 解决方案: <build><resources><resource>&l ...

  9. Mybatis传递多个参数的4种方式

    现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. ...

  10. SpringBoot (五) :SpringBoot整合mybatis

    说在前面 mybatis刚开始使用的时候比较麻烦,需要各种配置文件.实体类.dao层映射关联.还有一大推其它配置.初期开发了generator可以根据表结果自动生产实体类.配置文件和dao层代码,可以 ...

最新文章

  1. python自动化开发_python自动化开发-2
  2. 计算机专业可以评机械工程师,机械工程师个人评价
  3. JavaScript常用事件
  4. iso qemu 安装ubuntu_我该如何安装qemu?
  5. html+css+js实现注册页面
  6. 【滤波器】最小均方(LMS)自适应滤波器
  7. 【EDA】Mutisim基于Multisim的带通滤波器仿真设计实验
  8. Flutter 网络请求王者 Dio 应用简介
  9. db mysql导入_db mysql导入数据库
  10. docker for desktop一直starting
  11. 揭秘北京龙泉寺,连清华北大学子都排队出家的神秘科研组织
  12. Unity功能记录(十四) ------ 启动画面
  13. 计算机体系结构(简记)
  14. 短视频文案怎么写?优质短视频文案写作技巧
  15. 创新方法72变(荣振环)
  16. python论文格式检查系统_毕业论文格式检查软件
  17. WannaCry勒索病毒分析过程**上**
  18. 基于linux的c语言版本的俄罗斯方块
  19. Python制作小软件——1. 安装并使用PyQt5进行界面设计
  20. windows下用PartitionMagic 8.0删除linux分区后的处理

热门文章

  1. HDD工作原理 导图
  2. RedHat 7.0及CentOS 7.0禁止Ping的三种方法
  3. java在继承中父类的成员变量是否会被子类所覆盖
  4. 句法模式识别(两)-正规文法、上下文无关文法
  5. C#的方法的参数修饰符详解
  6. UBUNTU adb连接android设备
  7. 在ASP.NET中如何用C#.NET实现基于表单的验证
  8. DataGrid连接Access的快速分页法(1)——需求与现状
  9. Asp.Net下的DataGrid的多层表头
  10. 家庭局域网开启AP隔离利用无线路由器互连