文章目录
一、了解MyBatis
MyBatis中文官网: https://mybatis.net.cn/
1.什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
二、idea Maven项目的MyBatis的配置
1.在idea的pom.xml文件中mybatis的依赖坐标
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
2.建立mybatis-config.xml文件
在resources文件夹中新建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">
<configuration>
<!--配置环境-->
<environments default="mysql">
<!--配置Mysql的环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的四个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8&useSSL=false" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/xxx/Mapper/UserMapper.xml" />-->
<package name="*对应的接口类所在的文件夹*.Mapper"/> <!--Mapper为具体的文件夹-->
</mappers>
</configuration>
2.建立对应的Mapper文件夹和Mybatis的映射文件
在resources文件夹下创建和java文件夹中一致的目录等级
在resources中目录下一及用“\”表示,而在java目录下目录下一级使用的“.”
假设在Java路径下创建一个为com.xxx.Mapper的文件夹并新建对应的接口类UserMapper.java,则在resources目录下创建为从com\xxx\Mapper的文件夹并新建UserMapper.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.xxx.Mapper.UserMapper" >
<!-- 别名和数据库字段映射-->
<!-- com.xxx.Bean.UserBean是在java文件夹下创建的实体Bean类-->
<!-- <result column="username" property="username"/>其中的column="映射名",property="数据库中真实的名字"-->
<resultMap id="mapper" type="com.xxx.Bean.UserBean">
<result column="username" property="username"/>
<result column="password" property="password"/>
</resultMap>
</mapper>
三、idea Mysql连接配置
1.idea Mysql数据库的连接
在idea的右上角有数据库的连接按钮
点击+号添加mysql的数据源正确输入连接的数据池完成连接
这里所连接的数据库要与mybatis-config.xml文件中的配置的数据库保持一致
2.idea 数据库语句的书写
1.建立的Mapper数据封装接口类UserMapper
2.在UserMapper.xml文件中建立对应的Sql语句
3.sql语句中的id的即为UserMapper中的方法名
-
查询数据所有数据
<select id="findAll" resultMap="mapper"> select * from user <!-- user为数据库表名 --> </select>
-
根据Id查询数据库数据
<select id="selectUserById" resultMap="mapper" > select * from user where id = #{id} </select>
-
添加数据
<insert id="add"> insert into user (username,password)values(#{username},#{password}); </insert>
-
根据Id删除数据
<delete id="deleteUser"> delete from user where uid = #{id} </delete>
-
根据Id修改数据
<!-- 修改一个用户 --> <update id="updateUser"> update user set username = #{username},password = #{password} where id = #{id} </update>
3.小技巧
1.SQL语句中特殊字符处理:
*转义字符 <
*<![CDATA[内容]]>
2.执行添加修改时要提交事务
//通过SqlSessionFactory创建SqlSession
SqlSession ss = ssf.openSession(true);
//或者添加
ss.commit();
3.主键返回(添加或修改时使用)
<useGeneratedKeys="true" keyProperty="uid">
4.注解开发()
@Select("select * from user")
@Update("update user set username = username,password =password where id = id")
@Insert("insert into user (username,password) values username,password")
@Delete("delete from user where id = id")
四、idea 数据访问测试
1.数据库访问测试
- 读取配置文件mybatis-config.xml
- 根据配置文件构建SqlSessionFactory
- 通过SqlSessionFactory创建SqlSession
- 获取UserMapper接口的代理对象
- 执行方法
- 释放资源
//读取配置文件mybatis-config.xml
InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
//根据配置文件构建SqlSessionFactory
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
//通过SqlSessionFactory创建SqlSession
SqlSession ss = ssf.openSession();
//获取UserMapper接口的代理对象
UserMapper userMapper=ss.getMapper(UserMapper.class);
//执行方法
List<UserBean> user=userMapper.findAll();
System.out.println(user);
//释放资源
ss.close();
五、idea Mybatis代码提示插件(付费)
在idea 中的设置中搜索MyBatisCodeHelperPro插件
插件会提示Mybatis的代码提示和检错(会有一点的小错误)
可以在idea的项目中实现对应文件的关联
可以在独立执行对应Sql语句