Mybatis基础----(一)

  1. Mybatis的定义
    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

2.使用Mybatis的优点:
(1)Mybatis对JDBC进行了封装,可以简化JDBC代码;
(2)Mybatis自身支持连接池(也可以配置其它连接池),因此可以提高程序效率;
(3)Mybatis是将SQL配置在mapper文件中,修改SQL只是修改配置文件,类不需要重新加载;
(4)对查询SQL执行后返回的ResulrtSet对象,Mybatis会帮我们处理,转换成Java对象;

3. Mybatis框架

在这里插入图片描述
(1)sqlMapConfig.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂
(2)基于SqlSessionFactory可以生成SqlSession对象
(3)SqlSession是一个既可以发送SQL去执行,并返回结果,类似于JDBC中的Connection对象,也是Mybatis中至关重要的一个对象。
(4)Executor是SqlSession底层的对象,用于执行SQL语句
(5)MapperStatement对象也是SqlSession底层的对象,用于接收输入映射(SQL语句中的参数),以及做输出映射(即将SQL查询的结果映射成相应的结果)

4. 配置Mybatis的核心配置文件(mybatis-config.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">
    
<!-- MyBatis的全局配置文件 -->
<configuration >
	<!-- 1.配置开发环境(需设置一个默认的环境) -->
	<environments default="develop">
		<!-- 这里可以配置多个环境,比如develop,test等 -->
		<environment id="develop">
			<!-- 1.1.配置事务管理方式:JDBC/MANAGED
			JDBC:将事务交给JDBC管理(推荐)
			MANAGED:自己管理事务
			  -->
			<transactionManager type="JDBC"></transactionManager>
			
			<!-- 1.2.配置数据源,即连接池方式:JNDI/POOLED/UNPOOLED
				JNDI:已过时
				POOLED:使用连接池(推荐)
				UNPOOLED:不使用连接池
			 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/yonghedb?characterEncoding=utf-8"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	<!-- 2.加载Mapper配置文件(因mapper文件中配置了要执行的SQL语句) -->
	<mappers>
		<!-- 注意路径 -->
		<mapper resource="com/tedu/pojo/EmpMapper.xml"/>
	</mappers>
</configuration>

5. 创建映射文件mapper.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一般指定为当前文件的所在包路径+文件名(在maven项目中是接口)
	
 -->
<mapper namespace="com.tedu.pojo.EmpMapper">
	<!-- 通过select、insert、update、delete标签声明要执行的SQL -->
	<select id="findAll" resultType="com.tedu.pojo.Emp">
		select * from emp
	</select>
	<!-- 
	resultType:返回值类型,简单类型(例如:Integer,String,Emp等)
		如果返回集合(List<Emp>),只需配置集合中的元素类型即可!
	resultMap:复杂对象结构(例如多表关联查询等),后面用到再讲解
	 -->
</mapper>

6. 实现测试类,并测试
1、实现findAll方法,代码如下:

public void findAll() throws IOException{
	//1.读取sqlMapConfig.xml文件,获取其中的基本信息
	InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
	//2.根据配置信息生成SqlSessionFactory工厂对象, 
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
	//3.通过工厂获取一个SqlSession对象(用于执行SQL及返回结果)
	SqlSession session = factory.openSession();
	//4.执行SQL语句,查询emp表中的所有记录,封装到List集合中
	String sqlId = "com.tedu.pojo.EmpMapper.findAll";
	List<Emp> emplist = session.selectList( sqlId );
	//5.打印list集合
	for(Emp emp : emplist){
		System.out.println(emp);
	}
}

7. MyBatis增删改查

  • 新增员工
    1.编辑EmpMapper.xml文件,添加新员工对应的sql
<!-- 2.新增员工 -->
<insert id="insert">
	insert into emp(name,job,salary) values('韩少云', 'CEO', 5000)
</insert>

2、编写TestMybatis类,添加addEmp方法,实现新增员工操作。


/**
 * 2.新增:往emp表中添加一个新员工
 * @throws Exception
 */
public void addEmp() throws Exception{
	//1.读取sqlMapConfig.xml文件, 获取所有配置信息
	InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
	//2.创建工厂对象
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
	//3.通过工厂获取一个SqlSession对象
	SqlSession session = factory.openSession();
	//4.执行新增操作, 往emp表中添加一个新员工
	session.insert("com.tedu.pojo.EmpMapper.insert");
	//>>提交事务
	session.commit();
	//5.打印结果
	System.out.println("执行完成!");
}

  • 修改员工
    1、编辑EmpMapper.xml文件, 添加修改员工对应的sql.
<!-- 3.修改员工信息 -->
<update id="update">
	update emp set salary=6500 where name='韩少云'
</update>

2.2、编写TestMybatis类,添加updateEmp方法,实现修改员工信息。

/**
 * 3.修改:修改emp表中的员工信息
 * @throws Exception
 */
@Test
public void updateEmp() throws Exception{
	//1.读取sqlMapConfig.xml文件, 获取所有配置信息
	InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
	//2.创建工厂对象, 用于创建SqlSession对象
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
	//3.获取一个SqlSession对象
	SqlSession session  = factory.openSession();
	//4.执行更新操作
	session.update("com.tedu.pojo.EmpMapper.update");
	//>>提交事务
	session.commit();
	
	//5.打印结果
	System.out.println("执行完成!");
}

  • 删除员工
    1.编辑EmpMapper.xml文件,添加删除员工的sql语句
<!-- 4.删除员工信息 -->
<update id="delete">
	delete from emp where name='韩少云'
</update>

2.编写TestMybatis类,添加deleteEmp方法,实现删除员工

/**
 * 4.:删除emp表中的一条员工信息
 * @throws Exception
 */
@Test
public void deleteEmp() throws Exception{
	//1.读取sqlMapConfig.xml文件, 获取所有配置信息
	InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
	//2.创建工厂对象, 用于创建SqlSession对象
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
	//3.获取一个SqlSession对象
	SqlSession session  = factory.openSession();
	//4.执行删除操作
	session.update("com.tedu.pojo.EmpMapper.delete");
	//>>提交事务
	session.commit();
	
	//5.打印结果
	System.out.println("执行完成!");
}

  • 查询员工
    1.编辑EmpMapper.xml文件,添加查询员工对应的sql语句
<!-- 5.查询指定id员工信息 -->
<update id="findById">
	select * from emp where id=2
</update>

2.编写TestMybatis类,添加findById方法,实现根据id查询员工信息。

public void findById() throws IOException{
	//0.加载sqlMapConfig.xml文件,获取所有的配置信息
	InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
	//1.创建工厂对象
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
	//2.通过工厂创建一个SqlSession对象
	SqlSession session = factory.openSession();
	//3.执行SQL语句(namespace+Id)
	Emp emp = session.selectOne("com.tedu.pojo.EmpMapper.findById");
	//4.输出结果
	System.out.println(emp);
}


作者:qq_45340330
来源:CSDN
原文:https://blog.csdn.net/qq_45340330/article/details/94474895
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值