什么是mybatis?
mybatis前身是 ibatis,所以说以后用到的很多包名也叫ibatis
MyBatis(前身是iBatis)是一个支持普通SQL查询、存储过程以及高级映射的持久层框架。
持久层,可以简单理解为就是外层的一些操作,一些数据库的操作。
MyBatis框架也被称之为ORM(Object/Relation Mapping,即对象关系映射)框架。所谓的ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。
所谓的持久化就通俗的理解为把java对象保存在关系型数据库中
两种框架组合
Hibernate与MyBatis的区别
各有有点
Mybatis 底层配置一开始先学精通,但是后期熟练了以后,mybatis的sql的语句是可以用工具自动生成的,现在出来mybatis出了mybatis plus 写起来更容易。
mybatis的下载与使用
下载地址:https://github.com/mybatis/mybatis-3/releases
注意jar包本身就是一种压缩,里边内容没有加密的话,可以用反编译的方式找到他的源代码
mybatis没有包含数据库,你用那个你就导入那个驱动jar包
mybatis的工作原理
入门程序 ----查询客户
在实际开发中,查询操作通常都会涉及到单条数据的精确查询,以及多条数据的模糊查询。
1.-根据客户编号查询客户信息 2 -根据客户名模糊查询客户信息。户信息。
在这里我们保存表叫 t_customer这是一种命名方法,但是以后我们可以不要t_
步骤如下
3 .由于MyBatis默认使用log4j输出日志信息,所以如果要查看控制台的输出SQL语句,那么就需要在classpath路径下配置其日志文件。在项目的src目录下创建log4j.properties文件。
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.itheima=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
这个全部顶格xi
4 在src目录下,创建一个com.itheima.po包,在该包下创建持久化类Customer,并在类中声明id、username、jobs和phone属性,及其对应的getter/setter方法。
每一个表都对应如下类似的javabean我们把它们都放在po包下
public class Customer {
private Integer id;
private String username;
private String jobs;
private String phone
//省略Getter和Setter方法
@Override
public String toString() {
return "Customer [id=" + id + ", username=" + username +
", jobs=" + jobs + ", phone=" + phone + "]";
}
}
5 在src目录下,创建一个com.itheima.mapper包,并在包中创建映射文件CustomerMapper.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">
<!-- 以上是约束-->
<mapper namespace="com.itheima.mapper.CustomerMapper">
<!-- 名称空间实际是当前的xml的包路径 + 上你的xml文件名不加扩展名-->
<select id="findCustomerById" parameterType="Integer"resultType="com.itheima.po.Customer">
select * from t_customer where id = #{id}
<!-- 返回值的类型就是 resultType="com.itheima.po.Customer这个javabean的类型 -->
<!-- 传的参数类型parameterType="Integer"-->
</select></mapper>
6 在src目录下,创建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><!-- configuration根 -->
<environments default="mysql"> <!-- 环境现在是mysql -->
<environment id="mysql">
<!-- 使用jdbc的事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池
正常情况下数据库的连接想打电话一样,每个人有一个号码,
需要的话直接拨通进行通话,通话完成释放连接,其他人才能再次打入。
向客服电话10086
开通若干个客服电话 --100人
打入电话直接接通,上限100根据业务量来调整
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/itheima/mapper/CustomerMapper.xml" />
</mappers>
</configuration>
7. 在src目录下,创建一个com.itheima.test包,在该包下创建测试类MybatisTest,并在类中编写测试方法findCustomerByIdTest()。
public class MyBatisTest {
@Test
public void findCustomerByIdTest() throws Exception {
//1.读取MyBatis的核心配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2.根据配置文件构建一个SqlSessionFactory
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//3 利用sqlSessionFactory创建一个sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//4利用sqlsession执行Mapper文件定义的sql语句,并返回结果
Customer customer = sqlSession.selectOne("com.itheima.mapper"
+ ".CustomerMapper.findCustomerById", 2);
//5 打印输出结果
System.out.println(customer.toString());
//6关闭sqlsession
sqlSession.close();
}}
为了防止以后mapper文件多,忘记添加了,我们可以在全局配置文件这莫去写,让它直接去扫描包
更到了ppt 6.4.1