MyBatis 1章 入门(使用MyBatis完成CRUD)


MyBatis 2章 MyBatis与Spring整合


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 2章 MyBatis与Spring整合

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值