mybatis配置解析

一.引言:参考官方文档mybatis中提供了如下的配置,其中标红的需要掌握,其余的作为了解即可

二:配置解析之前的环境准备:进行配置之前要先有这几个东西,包括数据库表、Mybatis全局配置文件、实体类、mapper接口、mapper配置文件、用来连接数据库的工具类

  1.建库建表

 1 /*
 2 SQLyog Ultimate v12.09 (64 bit)
 3 MySQL - 5.7.24 : Database - mybatis
 4 *********************************************************************
 5 */
 6 
 7 
 8 /*!40101 SET NAMES utf8 */;
 9 
10 /*!40101 SET SQL_MODE=''*/;
11 
12 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
13 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
14 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
15 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
16 CREATE DATABASE /*!32312 IF NOT EXISTS*/`mybatis` /*!40100 DEFAULT CHARACTER SET latin1 */;
17 
18 USE `mybatis`;
19 
20 /*Table structure for table `user` */
21 
22 DROP TABLE IF EXISTS `user`;
23 
24 CREATE TABLE `user` (
25   `id` int(20) NOT NULL,
26   `name` varchar(30) DEFAULT NULL,
27   `pwd` varchar(30) DEFAULT NULL,
28   PRIMARY KEY (`id`)
29 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
30 
31 /*Data for the table `user` */
32 
33 insert  into `user`(`id`,`name`,`pwd`) values (1,'xiaoma','123'),(2,'zhangsan','1234'),(3,'lisi','12345'),(4,'王五','1234'),(5,'王六','123456'),(6,'王五','123456');
34 
35 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
36 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
37 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
38 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

  2.新建一个maven项目,在resources文件夹下新建一个mybatis-config.xml全局配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC"/>
 9             <dataSource type="POOLED">
10                 <property name="driver" value="com.mysql.jdbc.Driver"/>
11                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="123456"/>
14             </dataSource>
15         </environment>
16     </environments>
17     <mappers>
18         <mapper resource="com/xiaoma/mapper/UserMapper.xml"/>
19     </mappers>
20 </configuration>

  3.在java文件夹下新建一个util文件夹,用来存放工具类,在util文件夹下新建一个MybatisUtils.java的工具类

 1 package com.xiaoma.utils;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 public class MybatisUtils {
12     private static SqlSessionFactory sqlSessionFactory;
13 
14     //1.获取sqlSessionFactory对象
15     static{
16         try {
17             String resource="mybatis-config.xml";
18             //以流的方式去读取配置文件信息
19             InputStream inputStream= Resources.getResourceAsStream(resource);
20             //拿到sqlSessionFactory才能吧执行sql的东西生产出来,通过SqlS essionFactoryBuilder去构建这个流
21             sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
22         } catch (IOException e) {
23             e.printStackTrace();
24         }
25     }
26 
27     //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例
28     //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法
29     public static SqlSession getSession(){
30         return sqlSessionFactory.openSession();
31     }
32 }

  4.在java文件夹下新建一个pojo文件夹,用来存放实体类,在pojo文件夹下新建一个名为User的实体类

 1 package com.xiaoma.pojo;
 2 
 3 import lombok.Data;
 4 
 5 @Data
 6 public class User {
 7     private int id;
 8     private String name;
 9     private String pwd;
10 
11     public User() {
12     }
13 
14     public User(int id, String name, String pwd) {
15         this.id = id;
16         this.name = name;
17         this.pwd = pwd;
18     }
19 }

  5.在java文件夹下新建一个mapper文件夹,用来存放mapper接口和配置文件,在mapper文件夹下新建一个名为UserMapper的接口,接口中包括简单的增删改查

 1 package com.xiaoma.mapper;
 2 
 3 import com.xiaoma.pojo.User;
 4 import java.util.List;
 5 
 6 public interface UserMapper {
 7     //查询所有用户
 8     List<User> selectUser();
 9 
10     //根据id查询用户
11     User getUserById(int id);
12 
13     //插入用户到user表
14     int insertUser(User user);
15 
16     //根据用户名修改用户密码
17     int updataUser(User user);
18 
19     //根据用户名删除用户
20     int deleteUser(String name);
21 }

  6.在mapper文件夹下新建一个名为UserMapper.xml的配置文件,包括增删改查的实现,也就是写sql

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!--namespace:绑定一个dao接口-->
 6 <mapper namespace="com.xiaoma.mapper.UserMapper">
 7     <!--查询所有用户-->
 8     <select id="selectUser" resultType="com.xiaoma.pojo.User">
 9         select * from user
10     </select>
11 
12     <!--根据id查询用户-->
13     <select id="getUserById" resultType="com.xiaoma.pojo.User">
14         select * from user where id=#{id}
15     </select>
16     
17     <!--向user表插入一个用户-->
18     <insert id="insertUser" parameterType="map">
19         insert into user(id,name,pwd) values(#{id},#{name},#{pwd})
20     </insert>
21 
22     <!--根据用户名修改用户密码-->
23     <update id="updataUser" parameterType="com.xiaoma.pojo.User">
24         update user set pwd=#{pwd} where name=#{name}
25     </update>
26 
27     <!--根据用户名删除用户-->
28     <delete id="deleteUser" parameterType="com.xiaoma.pojo.User">
29         delete from user where name=#{name}
30     </delete>
31 </mapper>

 

三:配置解析—环境配置(Environments)

  1.MyBatis可以在environments配置多个environment,每一个environment都配一个唯一标识id,通过environments中的default属性绑定environment的id进行环境的切换(注意:多个环境的时候,MyBatis只能选择一种环境)

  2.MyBatis中有两种事务管理器,一个是JDBC,一个是MANAGED ,默认的事务管理器是JDBC,MANAGED 这个事务管理器一般不去用他,因为官方文档告诉我们这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期

  3.MyBatis的默认连接池POOLED

 

四:配置解析—属性配置(Properties)

  1.在MyBatis01这个demo中,我把配置都包含在了全局配置文件(mybatis-config.xml)中,现在可以通过优化属性,动态获取driver,url,username等信息

  2.第一步就是在resources文件夹下先建立一个db.properties文件,里边包含driver,url,username,password等信息

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
3 username=root
4 password=123456

  3.在全局配置文件中引入外部配置文件,然后通过${}的形式去绑定db.properties文件中的值

 1 <!--引入外部配置文件-->
 2 <properties resource="db.properties"/>
 3 <environments default="development">
 4     <environment id="development">
 5         <transactionManager type="JDBC"/>
 6         <dataSource type="POOLED">
 7             <!--通过${}绑定外部配置文件的属性-->
 8             <property name="driver" value="${driver}"/>
 9             <property name="url" value="${url}"/>
10             <property name="username" value="${username}"/>
11             <property name="password" value="${password}"/>
12         </dataSource>
13     </environment>
14 </environments>

  4.在java文件夹下新建一个mybatis02的测试文件,编写测试代码,这里就以查询所有用户为例

 1 package com.xiaoma;
 2 
 3 import com.xiaoma.mapper.UserMapper;
 4 import com.xiaoma.pojo.User;
 5 import com.xiaoma.utils.MybatisUtils;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.junit.Test;
 8 
 9 import java.util.List;
10 
11 public class MyTest02 {
12     @Test
13     public void selectAllUser(){
14         SqlSession session = MybatisUtils.getSession();
15         UserMapper mapper = session.getMapper(UserMapper.class);
16         List<User> users = mapper.selectUser();
17         for (User user:users) {
18             System.out.println(user);
19         }
20     }
21 }

  5.运行效果

 

五:配置解析—别名配置(typeAliases)

  方式1.在mybatis-config.xml这个全局配置文件中添加如下代码,这样的话就可以将UserMapper.xml中的resultType属性从com.xiaoma.pojo.User改为User

1 <!--别名配置-->
2 <typeAliases>
3     <typeAlias type="com.xiaoma.pojo.User" alias="User"></typeAlias>
4 </typeAliases>

  方式2.以扫描包的方式去,和方式一的效果是一样的,如果用这个方式,建议将UserMapper.xml中的resultType属性从com.xiaoma.pojo.User改为user时u尽量用小写,不用大写。

1 <typeAliases>
2     <package name="com.xiaoma.pojo"/>
3 </typeAliases>

  运行mybatis02测试文件,测试即可。

  注:这两种方式,当实体类比较多可以用第二种,实体类比较少可以用第一种。

 

六:配置解析—设置配置(Setting),参考官方文档,这个地方太特喵的多了https://mybatis.org/mybatis-3/zh/configuration.html#settings

 

七:配置解析—映射配置(mappers):注册绑定我们的mapper文件的

  有几个注意点:

  1.mappers使用class方式和class方式绑定的时候,接口和他的mapper配置文件必须同名

  2.mappers使用class方式和class方式绑定的时候。接口和他的mapper配置文件必须在同一个包下,使用resource不用注意这两种情况

原文地址:https://www.cnblogs.com/XiaoMaGuai/p/15656856.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1.pom.xml引入依赖 &lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper&lt;/artifactId&gt; &lt;version&gt;5
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;!DOCTYPE configuration PUBLIC &quot;-//mybatis.org//DTD Config 3.0//EN&quot; &qu
准备工作 ① 创建数据库&amp;数据表 ## 创建数据库 CREATE DATABASE `dbtest1`; ## 创建数据表 CREATE TABLE `t_user` ( `id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR(20) DEF
MyBatis逆向工程是指根据数据库表结构自动生成对应的实体类、Mapper接口以及SQL映射文件的过程。这个过程可以通过MyBatis提供的逆向工程工具来完成,极大地方便了开发人员,避免了重复的代码编写,提高了开发效率。 创建逆向工程的步骤 1、添加依赖&amp;插件 &lt;!-- 控制Mave
MyBatis获取参数值的两种方式:${}和#{} ${}的本质就是字符串拼接,#{}的本质就是占位符赋值。 ${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自
resultMap作用是处理数据表中字段与java实体类中属性的映射关系。 准备工作 ① 创建数据库&amp;数据表 CREATE DATABASE `dbtest1`; CREATE TABLE `t_emp` ( `emp_id` int NOT NULL AUTO_INCREMENT, `em
EHCache缓存针对于MyBatis的二级缓存。 MyBatis默认二级缓存是SqlSessionFactory级别的。 添加依赖 &lt;!-- MyBatis-EHCache整合包 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.mybatis.cac
MyBatis 提供了一级缓存和二级缓存的支持,用于提高数据库查询的性能,减少不必要的数据库访问。 一级缓存(SqlSession 级别的缓存) 一级缓存是 MyBatis 中最细粒度的缓存,也称为本地缓存。它存在于每个 SqlSession 的生命周期中,当 SqlSession 被关闭或清空时,
动态SQL是 MyBatis 中非常强大且灵活的功能,允许你根据不同的条件构建SQL查询。 这主要通过 &lt;if&gt;、&lt;choose&gt;、&lt;when&gt;、&lt;otherwise&gt;、&lt;foreach&gt;等标签实现。 查询场景 /** * 根据条件查询员工
本教程操作系统:windows10系统、DELL G3电脑。 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。在 MyBatis 中,配置数据库连接是非常重要的第一步。下面将详细介绍如何配置 MyBatis 的
今天小编给大家分享的是MyBatis批量查询、插入、更新、删除如何实现,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。
今天小编给大家分享的是Mybatis操作多数据源实现的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
本篇文章和大家了解一下mybatis集成到spring的方式有哪些。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1 前言1.1 集成spring前使用mybat...
今天小编给大家分享的是mybatis-plus分页查询的3种方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
本篇内容主要讲解“mybatis之BaseTypeHandler怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis...
这篇文章主要介绍了mybatisforeach怎么传两个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatisforeach怎...
这篇“MyBatis映射文件中parameterType与resultType怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的...
这篇文章主要介绍“MyBatis怎么获取自动生成的键值”,在日常操作中,相信很多人在MyBatis怎么获取自动生成的键值问题上存在疑惑,小编查阅了各式资料,整理出
这篇文章主要讲解了“怎么去掉IntelliJIDEA中mybatis对应的xml文件警告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入...
这篇文章主要介绍“MybatisPlus使用@TableId主键id自增长无效如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这...