目录
2.创建Mybatis的核心配置文件(mybatis-config.xml)
6.创建Mybatis的映射文件(一个映射文件对应一个mapper接口)
b > 加入log4j的配置文件(可能会报错,但是不影响的)
前言
最近刚学完mybatis,就想着写一些笔记加强一下对mybatis的理解以及可以帮助到有需要的人
一、Mybatis的简介
1.什么的Mybatis
mybatis是一个基于java的持久层框架
2.Mybatis的一些特性
① Mybatis是支持定制化SQL、存储过程以及高级映射的一个优秀的持久层框架
② Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
③ Mybatis可以使用简单的XML或者注解用于配置和原始映射,可以将接口和java的POJO(Plain Old Java Objects,普通的java对象)映射成数据库中的记录
④ Mybatis是一个半自动的ORM(Object Relation Mapping对象关系映射)框架
3.Mybatis和其他的持久层技术或者框架的对比
JDBC
① SQL中夹杂在java代码中,耦合度比较高
② 不易维护,修改的话会比较频繁
③ 代码冗长,并且开发效率很低
Hibernate
① 是一个基于全映射的全自动框架,但是对于字段数量很多的POJO想要对其进行部分映射会比较困难
② 操作简便,开发效率高
③ 需求中的长难复杂的SQL语句则需要绕开框架
④ 内部自动产生SQL语句,不容易做特殊优化
⑤ 反射操作太多,导致数据库性能下降
Mybatis
① 一种轻量级的半自动化的持久层框架,性能比较高
② SQL和java编码是分开的,功能边界清晰:java代码专注于业务,SQL语句专注于数据操作
③ 开发效率比Hibernate略低,但是完全可以接受
二、如何搭建Mybatis
1.首先创建一个maven工程,添加相关的依赖
<dependencies> <!-- Mybatis核心 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!-- junit测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.3</version> </dependency> <dependencies>
2.创建Mybatis的核心配置文件(mybatis-config.xml)
注意:配置文件都是放在src/main/resources目录下的
代码如下(示例):
<?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>
<!--引入properties文件-->
<properties resource="jdbc.properties"></properties>
<!--设置某个具体类型的 别名-->
<typeAliases>
<package name="填入实体类的包名"/>
</typeAliases>
<!--设置连接数据库的环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<package name="填入映射文件的包名"/>
</mappers>
</configuration>
3.配置jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/自己mysql中数据库的名字
jdbc.username=用户名
jdbc.password=密码
4.根据mysql中的数据表创建实体类
例如:
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String sex;
private String email;
5.创建mapper接口
例如:
public interface UserMapper {
//Mybatis中可以面向接口操作数据,要保证两个一致
//1.mapper接口的全类名和映射文件的命名空间namespace保持一致
//2.mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
/**
* 添加用户信息
*/
int insertUser();
/**
* 删除用户信息
*/
int deleteUser();
/**
* 修改用户信息
*/
int updateUser();
/**
* 查询一个实体类对象
* @return
*/
User getUserById();
/**
* 查询User集合
* @return
*/
List<User> getUserList();
6.创建Mybatis的映射文件(一个映射文件对应一个mapper接口)
需要注意的是:① id中的值应该和mapper接口中的方法名保持一致
② 如果是查询语句的话,则需要添加resultType,这个我们在核心配置文件中已经设置了别名,所以只需要将resultType设置为查询到的对象返回值的类名即可
③ 因为在核心配置文件中引用配置文件时是以包为单位,所以 必须保证mapper接口和其对应的映射文件必须在相同的包下,需要值得注意的是,mapper映射文件的包名要用“/”作为层级,如:
mapper接口的包名:
创建mapper映射文件的包名:
<?xml version="1.0" encoding="UTF-8" ?>
<!--mybatis映射文件-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="对应映射的mapper接口的全类名">
<!--int insertUser();-->
<insert id="insertUser">
insert into t_user values (null ,'张三', '123', 23, '女','523927@qq.com')
</insert>
<!--int deleteUser();-->
<delete id="deleteUser">
delete from t_user where id = 2
</delete>
<!--int updateUser();-->
<update id="updateUser">
update t_user set username='hjw',password='123' where id = 3
</update>
<!--User getUserById();-->
<select id="getUserById" resultType="User">
select * from t_user where id = 3
</select>
<!--List<User> getUserList();-->
<select id="getUserList" resultType="User">
select * from t_user
</select>
</mapper>
7.加入log4j日志功能(非必要)
a > 添加依赖
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
b > 加入log4j的配置文件(可能会报错,但是不影响的)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n"/>
</layout>
</appender>
<logger name="java.sql">
<level value="debug"/>
</logger>
<logger name="org.apache.ibatis">
<level value="info"/>
</logger>
<root>
<level value="debug"/>
<appender-ref ref="STDOUT"/>
</root>
</log4j:configuration>
8.测试结果
@Test
public void test1() throws Exception{
//读取mybatis的核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//生成sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//创建sqlSession,并设置为自动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//创建UserMapper对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调佣UserMapper中的接口实现方法
// mapper.insertUser();
// mapper.deleteUser();
// mapper.updateUser();
System.out.println(mapper.getUserById());
List<User> list = mapper.getUserList();
list.forEach(user -> System.out.println(user));
}
自此就可以使用mybatis完成一些基本的CURD操作咯!
总结
以上就是关于mybatis的我的一些个人的理解以及笔记,如有错误或者不足的地方欢迎指正!