Mybatis 系列全解(1)——全网免费最细最全,手把手教,学完就可做项目!

Mybatis 系列全解(1)——全网免费最细最全,手把手教,学完就可做项目! Mybatis 系列全解(1) 1. 第一个小程序2. CURD 增删改查3. 模糊查询4. 配置解析4.1 核心配置文件4.2 环

Mybatis 系列全解(1)

1. 第一个小程序2. CURD 增删改查3. 模糊查询4. 配置分析4.1 核心配置文件4.2 环境配置4.3 属性4.4 类型别名4.5 配置4.6 Mapper 映射器

1. 第一个小程序

1)创建数据库和表并输入数据。 (这里没有demo,详细介绍可以参考我之前的数据库文章,DDL数据库操作介绍参见数据库创建代码,链接:DDL数据库操作介绍,或者数据库约束。有一个例子添加约束来创建数据库(链接:约束)。

2)新建一个常规Maven项目

3)删除src项目

4)搭建环境

在pom.xml 中导入依赖项。

依赖关系

依赖

组IDmysql/组ID

artifactIdmysql-connector-java/artifactId

版本5.1.6/版本

/依赖

依赖

groupIdorg.mybatis/GroupId

artifactIdmybatis/artifactId

版本3.5.1/版本

/依赖

依赖

groupIdjunit/组ID

工件Idjunit/artifactId

4.12版本/版本

范围测试/范围

/依赖

/依赖项

5)创建模块模块(子模块)

创建mybatis的核心配置文件。

创建mybatics-config.xml并将其写入resources下。

?xml 版本=\’1.0\’ 编码=\’UTF-8\’ ?

!DOCTYPE 配置PUBLIC \’-//mybatis.org//DTD 配置3.0//EN\’

“http://mybatis.org/dtd/mybatis-3-config.dtd”

作品

环境默认=\’开发\’

环境ID=\’开发\’

事务管理器类型=\’JDBC\’/

数据源类型=\’POOLED\’

属性名称=\’驱动程序\’值=\’com.mysql.jdbc.Driver\’/

属性名称=\’url\’ 值=\’jdbc:mysql://localhost:3306/mybatis?useSSl=trueamp;useUnicode=trueamp;characterEncoding=UTF-8\’/

属性名称=\’用户名\’值=\’root\’/

属性名称=\’密码\’值=\’root\’/

/信息来源

/环境

/环境

映射器

映射器资源=\’com/kuang/dao/UserMapper.xml\’/

/映射器

/作品

注意:如果不写mapper标签,会报“Type interface com.kuang.dao.UserDao is not recognize by MapperRegistry”错误。

在main-java下创建com-kuang-dao pojo和utils文件夹,并在utils下创建工具类MybaticsUtils。

com.kuang.utils 包;

导入org.apache.ibatis.io.Resources。

导入org.apache.ibatis.session.SqlSession。

导入org.apache.ibatis.session.SqlSessionFactory。

导入org.apache.ibatis.session.SqlSessionFactoryBuilder。

导入org.apache.ibatis.session.defaults.DefaultSqlSessionFactory。

导入java.io.IOException;

导入java.io.InputStream。

//sqlSessionFactory—–sqlSession

公共类MybatisUtils {

//增加范围

私有静态SqlSessionFactory sqlSessionFactory;

静止的{

尝试{

//使用mybatis第一步:获取sqlSessionFactory对象

字符串资源=\’mybatis-config.xml\’;

输入流inputStream=Resources.getResourceAsStream(resource);

sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

}catch (IOException e) {

e.printStackTrace();

}

}

//顾名思义,现在我们有了一个sqlSessionFactory,我们可以从中获取sqlSession的实例。

//SqlSession 完全包含对数据库运行SQL 命令所需的所有方法

公共静态SqlSession getSqlSession() {

返回sqlSessionFactory.openSession();

}

}

在pojo下创建一个User,根据数据库带参数创建,不带参数的getter/setter toString等。

在dao下创建接口UserDao

com.kuang.dao 包;

导入com.kuang.pojo.User。

导入java.util.List。

公共接口UserDao {

ListUser getUserList();

}

在dao下创建UserMapper.xml

?xml 版本=\’1.0\’ 编码=\’UTF-8\’ ?

!DOCTYPE 映射器PUBLIC \’-//mybatis.org//DTD 映射器3.0//EN\’

“http://mybatis.org/dtd/mybatis-3-mapper.dtd”

!– Namespace绑定对应的Dao/Mapper接口–

映射器命名空间=\’com.kuang.dao.UserDao\’

!–选择查询语句–

select id=\’getUserList\’ resultType=\’com.kuang.pojo.User\’

从mybatis.user 中选择*

/选择

/映射器

resultMap 是一个集合。如果返回多个resultType,则返回一个。

6) 测试(是否整洁且与创建文件夹的格式相同?)

写入UserDaoTest

com.kuang.dao 包;

导入com.kuang.pojo.User。

导入com.kuang.utils.MybatisUtils。

导入org.apache.ibatis.session.SqlSession。

导入org.junit.Test。

导入java.util.List。

公共类UserDaoTest {

@测试

公共无效测试(){

//第一步获取sqlsession对象

SqlSession sqlSession=MybatisUtils.getSqlSession();

//方法1 getMapper

UserDao userDao=sqlSession.getMapper(UserDao.class);

ListUser userList=userDao.getUserList();

为(用户user:userList){

System.out.println(用户);

}

sqlSession.close();

}

}

可能的问题1:MapperRegistry无法识别类型接口com.kuang.dao.UserDao

因为核心配置文件中没有配置mapper

可能问题2:Maven资源导出失败。在主模块和子模块的pom.xml中写入以下内容:

建造

资源

资源

目录rc/main/java/目录

它包含

包含**/*.xml/include

包括**/*.属性/包括

/包括

/资源

资源

目录rc/main/resources/目录

它包含

包含**/*.xml/include

包括**/*.属性/包括

/包括

/资源

/资源

/建造

请记住更新Maven 或关闭并重新打开软件。

可能问题3:绑定接口错误。

可能的问题4:返回类型无效。

可能的问题5:方法名称不正确。

可能问题六:/对应的资源路径被分隔。

2. CURD 增删改查

1) 名称位置

命名空间中的包名称必须与Dao/Mapper 接口中的包名称匹配。

2)选择

选择您的查询语句。

id:是对应nameplace的方法名。

resultType:SQL语句执行的返回值。

参数类型:参数的类型。

3)流程的增、删、改、查:

书写接口

//插入用户

int addUser(用户用户);

编写映射器对应的SQL语句(select/insert/delect/update)。

插入id=\’addUser\’ 参数type=\’com.kuang.pojo.User\’

将mybatis.user(id,name,pwd) 插入value (#{id},#{name},#{pwd})。

/普京

测试

@测试

公共无效addUser(){

SqlSession sqlSession=MybatisUtils.getSqlSession();

UserMapper 映射器=sqlSession.getMapper(UserMapper.class);

int number=mapper.addUser(new User(4,\’王新政\’,\’123456\’));

如果(数字0){

System.out.println(\’插入成功!\’);

}

sqlSession.commit();

sqlSession.close();

}

请注意,添加、删除和修改: 需要提交事务。在提交数据库之前,您无法更改数据库的内容。

3. 模糊查询

执行Java 代码时,会传递通配符%_。

ListUser userList=mapper.getUserLike(\’%王%\’);

分析:

中间是国王的名字。

Wang % 以Wang 开头的名字% Wang 以Wang _ 结尾的名字是一个字符。

在SQL 拼接中使用通配符。

select id=\’getUserLike\’ resultType=\’com.kuang.pojo.User\’

select * from mybatis.user 其中名称如#{value}\’%\’;

/选择

4. 配置解析

4.1 核心配置文件

mybatis.config.xml

MyBatis 配置文件包含深刻影响MyBatis 行为的设置和属性信息。

作品

特性

环境

typeAliases(类型别名)

typeHandlers(类型处理程序)

objectFactory(对象工厂)

插入

环境(环境配置)

环境(环境变量)

交易经理

tdataSource(数据源)

DatabaseIdProvider(数据库供应商ID)

映射器

4.2 环境配置

Mybatis可以通过配置来适应不同的环境

您可以配置多个环境,但每个SQLSessionFactory 实例只能选择一个环境。

默认情况下可以选择相关环境的ID)

Mybatis默认的事务管理器是JDBC,连接池是POOLED。

了解如何使用多种操作环境

请注意一些要点:

默认使用的环境ID(例如default=\”development\”)。

每个环境元素定义的环境ID(例如id=\”development\”)。

事务管理器配置(例如:type=\”JDBC\”)

数据源配置(例如type=\”POOLED\”)

默认环境和环境ID 正如其名称所示。 您可以将环境命名为您喜欢的任何名称,但请确保默认环境ID 与您的环境ID 之一匹配。

4.3 属性

这些属性可以在外部配置并动态替换。这些属性可以在公共Java 属性文件中或在properties 元素的子元素中设置。 (数据库属性)

根据资源写入配置文件db.properties

驱动程序=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mybatis?useSSL=trueuseUnicode=truecharacterEncoding=UTF-8

用户名=root

密码=root

然后修改mybatis-config.xml如下:

属性名称=\’驱动程序\’值=\’${Driver}\’/

属性名称=\’url\’ 值=\’${url}\’/

属性名称=\’用户名\’值=\’${用户名}\’/

属性名称=\’密码\’值=\’${密码}\’/

!–重新引入外部配置文件–

属性资源=\’db.properties\’/

请务必按照指定的顺序书写标签。

如果一个属性在多个地方设置,MyBatis 按以下顺序加载该属性:

首先,读取属性元素主体中指定的属性。

然后根据properties元素的resource属性,或者根据url属性指定的路径,读取classpath下的属性文件,覆盖之前读取的同名属性。

最后,它读取作为参数传递给方法的属性,并覆盖先前读取的同名属性。

因此,通过方法参数传递的属性具有最高优先级,其次是在resource/url属性中指定的配置文件,最低优先级是在properties元素中指定的属性。 (引自外部)

4.4 类型别名

类型别名为Java 类型设置短名称。 这仅用于XML 配置,旨在减少完全限定类名的冗余编写。

与属性标签一样,您必须按照规则编写它们。

typeAlias和包

//设置Java 类型的短名称

类型别名

typeAlias type=\’com.kuang.pojo.User\’ alias=\’User\’/

//指定包名

包名=\’com.kuang.pojo\’/

如果没有注解,则使用首字母小写的bean的非限定类名作为别名。

第一个允许您自定义别名,但第二个则不允许。如果需要进行更改,则应向实体添加注释并使用注释值。

@alias(\’你好\’)

公共类用户{

Java 类型的内置类型别名与大小无关,并且具有特殊的命名风格:映射类型int 别名_int、映射类型Integer 别名int 等。

4.5 设置

这些是对MyBatis 的非常重要的调整,它们改变了MyBatis 的运行时行为。

4.6 映射器 mappers

MapperRegistry:注册并绑定Mapper文件。

方法一:使用相对于类路径的资源引用(资源测试对应/)推荐

映射器资源=\’com/kuang/dao/UserMapper.xml\’/

方法二:使用mapper接口实现类的全限定类名(类对应)。

Mapper class=\’com.kuang.dao.UserMapper\’/

注意:接口及其映射器配置文件必须具有相同的名称。

接口及其映射器配置文件必须位于同一个包中。

方法三:使用扫描包进行注入绑定

包名=\’com.kuang.dao\’

注意要点与方法2相同。

#以上是Mybatis系列的完整说明(一)——是全网免费的,最详细最全的,一步步教你,学完就可以跑你的项目了。相关内容来源网络仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91604.html

(0)
CSDN的头像CSDN
上一篇 2024年6月22日
下一篇 2024年6月22日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注