Mybatis
作用:MyBatis 是一款优秀的持久层(负责将数据到保存到数据库的那一层代码)框架,用于简化 JDBC 开发
一、Mybatis开发步骤图
二、具体步骤
2.1、导入依赖
即通过坐标的方式导入本模块需要的jar包
2.2、配置mybatis文件:(mybatis文件中主要包含:数据库的连接信息和加载sql映射文件)
<?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>
<typeAliases> //可以简化映射文件中的type的书写,类似于cd到指定目录
<!--name属性的值是实体类所在包-->
<package name="com.itheima.pojo"/>
</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:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加载sql的映射文件 单个加载模式-->
<!--
<mapper resource="com/itheima/Mapper/userMapper.xml"/>
-->
<!--Mapper代理方式 将mapper下的所有映射文件都加载进来-->
<package name="com.itheima.Mapper"/>
</mappers>
</configuration>
2.3、编写实体类
实体类中的内容与数据库表的内容一一对应。提供对应的属性(最好都使用包装类,因为当没有赋值时,属性值为null,有利于sql的书写)、get和set方法、tosting方法。
2.4、编写Mapper接口
Mapper接口中书写的是与映射文件中对应的sql的抽象方法。
书写时应当考虑的属性:
1、参数:该方法是否要传递参数
2、是否需要返回值
2.1、如果需要,返回值类型是什么?
2.4、编写映射文件(可以通过接口直接生成,这样可以避免把名字写错了)
映射文件中书写的是:对应接口中的sql语句。
注意:1、sql语句的id要和接口中的方法名一样
2、使用resultMap来映射实体类和数据库中名称不一致的属性。
eg:
<resultMap id="brandResultMap" type="brand">
<!--
id:完成主键字段的映射
column:表的列名
property:实体类的属性名
result:完成一般字段的映射
column:表的列名
property:实体类的属性名
-->
<result column="brand_name" property="brandName"/>
<result column="company_name" property="companyName"/>
</resultMap>
3、mapper的namespace必须是对应接口的全限定名
eg:<mapper namespace="com.itheima.Mapper.BrandMapper">
2.5编写测试类
public void testSelectAll() throws IOException {
//1.加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2.获取SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession(true); //true表示自动提交事务 false则需要使用sqlSession.commit()来手动提交
//3.获取Mapper接口的代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//增删改查变化的只有:4、执行方法中的内容,其他代码都是不变的。
//4、执行方法
List<Brand> brands = brandMapper.selectAll();
System.out.println(brands);
//4、释放资源
sqlSession.close();
}
三、其他注意事项
3.1、使用注解开发(注解完成简单功能,配置文件完成复杂功能。)
当sql语句比较简单时,可以在接口中使用注解代替映射文件来开发。
eg:
@Select(value = "select * from tb_user where id = #{id}")
public User select(int id);
3.2、接口和映射文件要在同一目录下
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。