1.MyBatis整合

  1. 创建Maven项目
  2. 根据数据库,创建实体类,遵循下划线转驼峰命名
  3. 创建对实体类进行dao操作的 映射接口  ,并在映射接口中定义方法。
  4. 创建映射文件 xxxMapper.Xml ,根据映射接口定义其中的mapper内容
  5. 在MyBatis的配置文件中,配置引用我们的映射文件,添加log4j的配置文件.properties文件,并修改路径。

  1. 测试类  获取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>

  1. 创建系统的目录结构

注意: 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

                                                                                            ---------转载老师课堂上给我们写的笔记


版权声明:本文为Yang_Ke_Di原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。