MyBatis 1章 入门(使用MyBatis完成CRUD)
1、技术目标:
- 在项目中加入MyBatis框架
- 配置MyBatis框架
- 完成简单的CRUD操作
2、什么是MyBatis?
- MyBatis 的前身是 iBatis,iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架
- MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架
- MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索
- MyBatis使用简单的XML或注解用于配置和原始映射
3、使用准备
注意:本案例所使用数据库为MySQL 5.5.12
3.1)在MySQL数据库test中创建表film(电影表)并添加测试数据,SQL语句如下:
--创建影片表 CREATE TABLE `film` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `fname` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; INSERT INTO `film` VALUES ('1', '刀见笑'); INSERT INTO `film` VALUES ('2', '加勒比海盗4'); INSERT INTO `film` VALUES ('3', '第九鹰团'); INSERT INTO `film` VALUES ('4', '速度与激情5'); INSERT INTO `film` VALUES ('5', '雷神'); INSERT INTO `film` VALUES ('6', '最爱'); INSERT INTO `film` VALUES ('7', '宇宙英雄之超银河传说'); INSERT INTO `film` VALUES ('8', '危情三日');
3.2)项目中导入jar包(本文已提供下载):
mybatis-3.0.4.jar(本案例所使用的mybaties库)
mysql-connector-java-5.1.13-bin.jar(MySQL驱动)
3.3)在项目中创建如下包:
com.xxx.dao(放置数据访问接口以及Mapper配置文件)
com.xxx.pojo(放置实体类)
com.xxx.test(放置测试类)
3.4)加入MyBatis配置文件mybatis-config.xml放在src(类路径)下,内容如下:
<?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> <settings> <!-- changes from the defaults --> <setting name="lazyLoadingEnabled" value="false" /> </settings> <typeAliases> <!--这里给实体类取别名,方便在mapper配置文件中使用--> <typeAlias alias="Film" type="com.xxx.pojo.Film"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--这里添加的是执行CRUD操作的接口对应的配置文件(xml文件)--> <mappers> <mapper resource="com/xxx/dao/FilmMapper.xml"/> </mappers> </configuration>
4、编写POJO类Film
代码如下:
package com.xxx.pojo; public class Film { // Fields private Long id; private String fname; // Constructors /** default constructor */ public Film() { } // Property accessors public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getFname() { return this.fname; } public void setFname(String fname) { this.fname = fname; } }
5、编写数据访问(CRUD)接口FilmMapper
代码如下:
package com.xxx.dao; import java.util.List; import java.util.Map; import com.xxx.pojo.Film; /** * 电影信息数据访问接口 */ public interface FilmMapper { /** * 功能:查询所有电影 * @return */ public List<Film> getAllFilm(); /** * 功能:按编号获取电影 * @return */ public Film getFilmById(int id); /** * 功能:查询并排序 * @param params * @return */ public List<Film> getAllFilmOrder(Map<String, Object> params); /** * 功能:添加影片 * @param film */ public void insertFilm(Film film); /** * 功能:修改影片 * @param film */ public void updateFilm(Film film); /** * 功能:删除影片 * @param id */ public void deleteFilm(int id); }
6、编写Mapper配置文件FilmMapper.xml
注意:FilmMapper.xml配置文件与FilmMapper接口放在同一路径下
文件代码如下:
<?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.xxx.dao.FilmMapper"> <!-- 查询所有电影信息,对应FilmMapper接口中的getAllFilm方法 --> <select id="getAllFilm" resultType="Film"> select * from film </select> <!-- 按电影编号查询电影信息,对应FilmMapper接口中的getFilmById方法 --> <select id="getFilmById" parameterType="int" resultType="Film"> select * from film where id=#{id} </select> <!-- 按要求排序 ${变量名}表示将变量的值原样输出,就是拼接字符串 --> <select id="getAllFilmOrder" parameterType="map" resultType="Film"> select * from film where 1 = 1 <if test="orderKey != null"> order by ${orderKey} </if> </select> <!-- 添加影片 --> <insert id="insertFilm" parameterType="Film" keyProperty="id" useGeneratedKeys="true"> insert into film (fname) values (#{fname}); </insert> <!-- 修改影片 --> <update id="updateFilm" parameterType="Film"> update film <trim prefix="set" suffixOverrides=","> <if test="fname != null"> fname = #{fname} </if> </trim> where id = #{id} </update> <!-- 删除影片 --> <delete id="deleteFilm" parameterType="int"> delete from film where id = #{id} </delete> </mapper>
7、编写测试类TestMyBaties,对CRUD进行测试
代码如下:
package com.xxx.test; import java.io.IOException; import java.io.Reader; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.TestCase; 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 com.xxx.dao.FilmMapper; import com.xxx.pojo.Film; public class TestMyBaties extends TestCase { //指定MyBatis配置文件 private static final String RESOURCE = "mybatis-config.xml"; /** * 共6步操作完成CRUD * @throws IOException */ public void testBaties() throws IOException{ //1、指定MyBaties配置文件 Reader reader = Resources.getResourceAsReader(RESOURCE); //2、创建SqlSessionFactory() SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = null; try { //3、获取SqlSession session = sessionFactory.openSession(); //4、获取DAO接口对象 FilmMapper mapper = session.getMapper(FilmMapper.class); //5、CRUD操作 //5.1--添加影片 Film film = new Film(); film.setFname("笑傲江湖"); mapper.insertFilm(film); session.commit();//添加、修改、删除操作最后需要提交事务 //5.2--获取所有电影信息 List<Film> filmList = mapper.getAllFilm(); //显示所有电影信息 for(Film filmObj : filmList){ System.out.println("电影ID:" + filmObj.getId() + " 电影名:" + filmObj.getFname()); } //5.3--查询排序 Map<String, Object> params = new HashMap<String, Object>(); params.put("orderKey", "id asc"); filmList = mapper.getAllFilmOrder(params); //显示所有电影信息 for(Film filmObj : filmList){ System.out.println("电影ID:" + filmObj.getId() + " 电影名:" + filmObj.getFname()); } //5.4--修改影片"笑傲江湖"为"喜剧之王" film = mapper.getFilmById(10); film.setFname("喜剧之王"); mapper.updateFilm(film); session.commit(); //5.5--删除影片"笑傲江湖",其ID为10 mapper.deleteFilm(10); session.commit(); } catch (Exception e) { e.printStackTrace(); }finally{ //6、关闭SqlSession if(session != null){ session.close(); } } } }
相关推荐
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中...《MyBatis-Plus入门文档》主要介绍了MyBatis-Plus入门使用,以及关于mybatis-plus的更多介绍及特性,感兴趣的可以下载学习一下
1. **创建(Create)**:在 `iBatis` 和 `MyBatis` 中,创建新记录通常涉及到一个Mapper接口和对应的XML配置文件(或注解)。首先,你需要定义一个实体类,然后创建一个插入方法,指定SQL语句。例如,创建一个用户: ...
05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能...
本项目主要展示了如何使用Mybatis进行基本的CRUD(创建、读取、更新、删除)操作,并且结合了Junit进行单元测试,确保代码的正确性。 在Mybatis中,CRUD操作的核心在于Mapper接口和XML配置文件。Mapper接口定义了...
使用MyBatis进行CRUD操作非常直观。例如,插入一条用户数据: ```java SqlSession session = sqlSessionFactory.openSession(); try { UserMapper mapper = session.getMapper(UserMapper.class); User user ...
压缩包中的"books"可能是一个示例项目,包含了使用Ibatis和Mybatis进行CRUD和分页操作的代码实例。通过阅读和分析这些代码,开发者可以更深入地理解如何在实际项目中应用这两个框架。 总的来说,这份资源对于学习...
在本文中,我们将深入探讨"Mybatis-Plus入门第二天讲义1"所涵盖的知识点,主要涉及ActiveRecord模式、Mybatis-Plus的基本操作以及如何在Java中使用这些概念。 首先,我们来理解什么是ActiveRecord。ActiveRecord是...
下面我们将详细介绍如何使用注解实现MyBatis的CRUD。 1. **注解简介** MyBatis 的注解主要包括 `@Select`、`@Insert`、`@Update` 和 `@Delete`,它们分别用于定义查询、插入、更新和删除操作的SQL语句。此外,还有...
MyBatis-CRUD 是一个围绕MyBatis框架展开的主题,它主要涵盖了数据库的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)等CRUD操作。MyBatis是一个优秀的持久层框架,它支持定制化SQL、...
【自虐1.2】Spring+MyBatis完成CRUD 在本文中,我们将深入探讨如何结合Spring框架和MyBatis轻量级持久层框架来实现数据库的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称为...
标题 "使用mybatis实现CRUD" 涉及到的是在Java开发中使用MyBatis框架进行基本的数据操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储...
MyBatis CRUD操作Java,MyBatis,单元测试,MySql,Maven的CRUD操作这包含构建和运行MyBatisCRUD应用程序所需的一组指令。建设项目。先决条件设置了JDK 1.6.x或更高版本的Maven 2或更高版本的java_home和m2_home。...
这个"SpringBoot+MybatisCRUD 整合案例"是为初学者设计的,旨在帮助他们快速掌握这两个流行的框架的结合使用。 首先,我们需要在项目中引入Spring Boot和MyBatis的依赖。在`pom.xml`文件中,我们需要添加以下Maven...
**使用CRUD模板** MyBatis提供了SqlSessionTemplate或SqlSessionDaoSupport作为CRUD操作的基础模板,它们封装了SqlSession的生命周期管理,使我们无需手动管理事务。在Spring框架中,可以将Mapper接口注入到Service...
1. **环境准备**:确保你的开发环境中已经安装了Java Development Kit (JDK) 和Maven,这两个是MyBatis运行的基础。同时,你需要一个数据库,例如MySQL,来存储和操作数据。 2. **创建项目结构**:创建一个新的...
本文将重点讲解MyBatis操作入门的相关知识,通过源码解析,帮助你深入理解MyBatis的工作原理及使用方法。 1. MyBatis概述 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了...
在本篇文章中,我们将深入探讨MyBatis的架构,并逐步引导你完成MyBatis的入门配置。 首先,理解MyBatis的核心架构是至关重要的。MyBatis的主要组件包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和...
Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...
MyBatis零基础入门