- 创建Maven项目
- 根据数据库,创建实体类,遵循下划线转驼峰命名
- 创建对实体类进行dao操作的 映射接口 ,并在映射接口中定义方法。
- 创建映射文件 xxxMapper.Xml ,根据映射接口定义其中的mapper内容
- 在MyBatis的配置文件中,配置引用我们的映射文件,添加log4j的配置文件.properties文件,并修改路径。
- 测试类 获取SqlSessionFactory
Readerread = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory =new SqlSessionFactoryBuilder().build(read);
SqlSessionsqlSession =sqlSessionFactory.openSession();
SysUserMapperuserMapper =sqlSession.getMapper(SysUserMapper.class);
第一:maven项目创建成功,效果如下

第二:修改pom.xml文件,我们需要配置Maven项目运行的基本环境,比如我们要进行单元测试,要连接数据库,都需要有jar包进行支持。在该文件中添加如下内容:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>l.6</source> <target>l.6</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.26</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies> |
添加完毕之后,进行ctrl+s进行保存:多了一个Maven Dependencies

但是现在项目上有红色 *, 所以我们要刷新一下Maven项目。

到此为止: Maven的运行环境,还差一步Junit的配置文件,需要将log4J.properties,拷贝到

然后下面的路径待修改:

第二大步: 搞定mybatis的运行环境
1.mybatis的配置文件: 在以下目录,创建mybatis-config.xml文件

2.修改mybatis的配置文件:拷贝如下内容

<configuration> <!-- 全局配置项 --> <settings> <setting name="logImpl" value="LOG4J" /> <!-- 将以下画线方式命名的数据库列映射到Java对象的驼峰式命名属性中 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 延迟加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings> <!-- 配置包的别名 <typeAliases> <package name="jack.mybatis.authority.model" /> </typeAliases>--> <!-- 配置数据库连接 --> <environments default="development"> <environment id="development"> <!-- 每个environment元素定义的环境ID --> <transactionManager type="JDBC"> <!-- 事务处理方式 --> <property name="" value="" /> </transactionManager> <dataSource type="UNPOOLED"> <!-- 数据源配置 --> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- 数据库JDBC驱动 --> <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis" /> <!-- 数据库URL --> <property name="username" value="root" /> <!-- 数据库用户 --> <property name="password" value="123456" /> <!-- 密码 --> </dataSource> </environment> </environments> <!-- 引用映射文件 --> <mappers> <mapper resource="com/zq/mapper/CountryMapper.xml" /> <mapper resource="com/zq/mapper/CountryMapper2.xml" /> </mappers> </configuration> |
- 创建系统的目录结构


注意: countryMapper.xml 作为我们的映射文件,需要格外注意以下几点:
先拷贝文档声明:


遗漏下面这个属性:

至此:最简单的规范Mybatis项目完成,开始进行测试:测试之前千万千万别忘了我们还有个待修改路径:

最后开始去写测试类:测试类所在的目录:

新建一个测试类: TestCountry.java 这个类中,我们要
加载mybatis的基础信息
获取sqlSession

最后的配置:

映射器方法多参数传递:假如有两个参数 username password
- arg0 \arg1 | param1 \param2
Select * from user where user_name = #{arg0} and user_password = #{arg1}
②: 使用map进行传递: 保证sql中的占位 和Map的key值一致。
Map<String,Object> paraMap = new HashMap<>();
paramMap.put(“uname”,”周广彬”);
paramMap.put(“pwd”,”123456”);
Select * from user where user_name = #{uname} and user_password = #{pwd}
③使用注解
List<SysUser> selectUserDeptByUid(@Param("uuuuid")int userid);
select * from sys_user u , sys_dept d where u.dept_id = d.id and u.id = #{uuuuid}
Mybatis: 最流行的:
一个实体类 p.java --> 接口 pMapper.java --> pMapper.xml
使用注解之后的:
一个实体类 p.java --> 接口 pMapper.java --> pMapper.xml
第三章: MyBatis 高级映射 ★
1: 需求: 查询出某个用户详细信息和它的部门名称

一对一嵌套查询:

一对多映射:
![]()


Mybatis要有基础的配置文件: mybatis-config.xml 放置在 src/main/resources 文件夹下,
此处有两个地方需要修改,第一个是数据源配置,第二点引用映射文件。
Com.zq.bean -->实体类 Medicine.java
Com.zq.mapper--> 接口类 MedicineMapper.java
映射接口: 在接口中的方法都抽象的不必实现的。 起的名字很重要,要来做关联。
Com.zq.mapper--> 映射文件xml medicineMapper.xml 映射文件
第一步:拷贝文档声明
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
第二步:编写<mapper> 标签, namespace属性非常重要,错误会导致映射不成功。
Namespace 值指向的是 映射接口的全类名eg. Com.zq.mapper.MedicineMapper
第三步:和方法做具体映射。id属性指定和接口中的方法进行关联。
增:<insert >,在新增的时候,一般参数传递使用实体类,parameterType可写可不写。 注意: 获取自动增长生成的主键useGeneratedKeys=”true”,keyPropety=”id”
删:<delete>
改:<update>
映射接口中,方法的参数的问题。
情况1:参数只有一个 parameterType可写可不写
情况1.1 可以是一个实体类
情况1.2 可以是一个基本数据类型
情况2:参数是一个以上: ☆ 使用注解 @Param 起个别名,这个别名对应是sql中的参数值
![]()

查: <select>
Id:
resultType:结果类型 -->指定一个实体类
只要是查询的结果的列,和实体类中的属性能够对应上【考虑到有无配置mapUnderScoer,,,,这个参数】,就可以使用resultType
resultMap:结果Map结合,自动映射不好使,闲的,去手动配置映射。

Id 比较特殊: 可以使用id标签进行手工映射。 property 实体类中的属性名 , column:数据库中的字段名
注意:特殊字段类型:添加 jdbcType=BLOB类型 TIMESTAMP
列的别名可以解决一切不对应。
高级映射:
1对1:
实体类的某个属性,也是一个实体类。

1对多:
实体类中的某个属性,是一个集合

动态SQL: if where
---------转载老师课堂上给我们写的笔记