MyBatis的使用
要了解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的使用相关推荐
- mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string
mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...
- MyBatis的插入后获得主键的方式
需求: 使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法: 在mapper中指定keyProperty属性,示例如下: <insert id=" ...
- mybatis使用注解开发
mybatis使用注解开发 面向接口编程 在之前我们是通过面向对象编程,但是在真正开发的时候我们会选择面向接口编程. 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的 ...
- mybatis ResultMap
ResultMap 解决属性名和字段的名称不一致的问题. 查询为null的问题 创建java实体类: public class User {private int id; //idprivate St ...
- mybatis配置文件解析
mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...
- mybatis CRUD操作
mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...
- java mybatis基础
java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...
- mybatis的资源过滤错误及xml文件编码错误
mybatis 解决maven项目内资源过滤的问题 写的配置文件无法被导出或者生效的问题. 解决方案: <build><resources><resource>&l ...
- Mybatis传递多个参数的4种方式
现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. ...
- SpringBoot (五) :SpringBoot整合mybatis
说在前面 mybatis刚开始使用的时候比较麻烦,需要各种配置文件.实体类.dao层映射关联.还有一大推其它配置.初期开发了generator可以根据表结果自动生产实体类.配置文件和dao层代码,可以 ...
最新文章
- python自动化开发_python自动化开发-2
- 计算机专业可以评机械工程师,机械工程师个人评价
- JavaScript常用事件
- iso qemu 安装ubuntu_我该如何安装qemu?
- html+css+js实现注册页面
- 【滤波器】最小均方(LMS)自适应滤波器
- 【EDA】Mutisim基于Multisim的带通滤波器仿真设计实验
- Flutter 网络请求王者 Dio 应用简介
- db mysql导入_db mysql导入数据库
- docker for desktop一直starting
- 揭秘北京龙泉寺,连清华北大学子都排队出家的神秘科研组织
- Unity功能记录(十四) ------ 启动画面
- 计算机体系结构(简记)
- 短视频文案怎么写?优质短视频文案写作技巧
- 创新方法72变(荣振环)
- python论文格式检查系统_毕业论文格式检查软件
- WannaCry勒索病毒分析过程**上**
- 基于linux的c语言版本的俄罗斯方块
- Python制作小软件——1. 安装并使用PyQt5进行界面设计
- windows下用PartitionMagic 8.0删除linux分区后的处理