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