使用Mybatis
- 编写实体类
- 编写核心配置文件
- 编写接口
- 编写Mapper.xml
- 测试
使用Mybatis
配置文件
1、主配置文件
代码如下
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 配置 --><properties/><!-- 属性 --><settings/><!-- 设置 --><typeAliases/><!-- 类型别名 --><typeHandlers/><!-- 类型处理器 --><objectFactory/><!-- 对象工厂 --><plugins/><!-- 插件 --><environments><!-- 配置环境 --><environment><!-- 环境变量 --><transactionManager/><!-- 事务管理器 --><dataSource/><!-- 数据源 --></environment></environments><databaseIdProvider/><!-- 数据库厂商标识 --><mappers/><!-- 映射器 --></configuration>
示例
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><package name="com.itranswarp.learnjava.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:localhost:3306/test"/><property name="username" value="root"/><property name="password" value="newpass"/></dataSource></environment></environments><mappers><mapper resource="com/itranswarp/learnjava/mapper/UserMapper.xml"></mapper><!-- <package name="com.itranswarp.learnjava.mapper"/>--></mappers></configuration>
2、mapper示例
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.itranswarp.learnjava.mapper.UserMapper"><select id="selectUser" resultType="UserPojo">select * from users</select></mapper>
3、使用
常用对象
ResourcesSqlSessionFactorySqlSessionFactoryBuilder` ```java
String resource = "mybatis.xml";InputStream in = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = sqlSessionFactory.openSession();List<UserPojo> userPojoList = session.selectList("com.itranswarp.learnjava.mapper.UserMapper.selectUser");// List<UserPojo> userPojoList = session.selectList("UserMapper.selectUser");for(UserPojo u: userPojoList) {System.out.println(u.toString());System.out.println(u.name);}
<a name="xPvgB"></a>## <br /><a name="MHzEi"></a># 引入<a name="vifNe"></a>## 什么是 MyBatis-Spring?MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。```xml原生<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency>结合<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency>
错误
编译时提示错误 Error parsing SQL Mappe
编译时提示错误 Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/shao/mapping/userMapper.xml
即找不到userMapper.xml这个Mapper文件,仔细查看了目录设置,并没有错误,在网上找了半天,终于发现原因:
idea不会编译src的java目录的xml文件
<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources>
找不到类
Mapped Statements collection does not contain value for UserMapper.selectUser
typeAliases 别名
由于类的全限定名很长,在多次需要使用的时候,比较不方便,在mybatis中允许定义一个简写来代替,这就是别名,分为系统定义和自定义别名。在mybatis中别名由类TypeAliasRegistry来定义(org.apache.ibatis.type.TypeAliasRegistry)。在mybatis中,别名不区分大小写。
3.1、自定义别名
由于现实开发中,存在许多自定义的对象需要重复使用,因此mybatis中也提供了用户自定义别名的规则。我们可以通过TypeAliasRegistry类的registerAlias方法注册,也可以采用配置文件或或者扫描方式来定义它。
3.1.1、使用配置文件定义
3.1.2、扫描
现实开发中可能存在大量的实体类,如果一个一个的配置就不适合了。因此mybatis还提供了扫描别名。如上配置:两个实体类位于同一包下,还可以这样配置:
<typeAliases><package name="com.ssm.pojo"/></typeAliases>
<br />3.1.3、注解配置别名<br />如果多个类同时包含User实体类,在通过包扫描后,可能会有冲突。则可以通过注解来区分。比如:<br />package com.ssm.pojo; @Alias("user3") public Class User{ ... ... } <br />这样就可以避免因为别名重名导致的扫描失败的问题。<br />4、typeHandler类型转换器<br />在JDBC中,需要在PreparedStatement对象中设置哪些已经预编译过的SQL语句的参数。执行SQL后,会通过ResultSet对象获取得到数据库的数据。而这些,Mybatis是根据数据库数据的类型通过TypeHandler来实现的。
作者:东方欲晓_莫道君行早
链接:https://www.jianshu.com/p/29ea937bed35
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
来源
