mybatis01-创建,基本配置,log4j,动态sql,实现

知识点比较琐碎,一点点的整理起来的。

一.mybatis创建

mybatis是一个ORM框架,为我们操作数据库提供了很大的方便。

首先,我是给予maven使用的mybatis

1.导入jar包 mybaits的jar包
2.建立数据库表,是指对应的实体类
3.创建配置文件 设置数据库的而连接 引入映射配置文件
主配置文件放在src/main/resource
映射配置 配置实体类和数据库表的映射关系,设置相关的sql语句
一般放在src/main/java
通过java代码调用

二.关于mapper.xml的配置

1.<mapper namespace="personNamespace">
namespace调用时的映射名。
personNamespace.add 调用add方法

2.可以使用包含报名类名的命名空间
<mapper namespace="com.qfedu.crud.Person">

3查询要 有resultType查询结果类型
支持map类型
<select id="findById" parameterType="int" resultType="Person">

</select>

4.查询别名的时候,结果的字段名和实体类的属性不一致时,创建映射
<!-- 表和实体类的对象关系 -->
<!-- property 类中的属性
column 表中的字段或者别名-->
<resultMap type="Person" id="personMap">
<id property="id" column="id"/>
<id property="name" column="uname"/>
<id property="age" column="age"/>
</resultMap>

扫描二维码关注公众号,回复: 4944437 查看本文章

resultMap 就是id的值

5.#{}和${}区别

#{} 绝大数情况下使用,将其转为占位符
${} 参数类型就会改为对应的带有getset的实体类类型
如果是基本类型(比如"int"),直接使用${} 异常,找不到对应的get方法
参数是直接拼接到sql语句中

6.特殊字符处理  
xml小于 < 是特殊字符 处理
<![CDATA[带有<的语句处理]]> 原样输出
或者使用 &lt; 使用实体符号
<![CDATA[select * from person where age < 12]]> 或者
select * from person where age <![CDATA[<]] 12

二.mybatis.xml配置

1.

映射的mapper.xml地址
<mappers>
<mapper resource="com/qfedu/crud/PersonMapper.xml" />
</mappers>

2

<typeAliases>
<!-- 定义别名 alisa是别名 type是定义别名的类型 -->
<typeAlias alias="Person" type="com.qfedu.crud.Person"/>
</typeAliases>

三.动态sql基本语法

1.<where>
</where>
相当于sql的where

2.<trim suffixOverrides=",">
去除最后的 ,
</trim>

3.<if test="条件">
</if>

4.修改数据中的<set></set>
相对于sql的set 自动删除最后的逗号

5.<choose> 相当于 if(){}else if(){}
<when test="条件">

</when>
<otherwise>
</otherwise>
</choose>

6.
mybatis中,针对非基本类型,本质上参数都会转为map结构
如果传来的是列表,转为map结构后,key值是字符串"list"
如果传来的是数组,转为map结构后,key值字符串为“array”
<foreach collection="遍历的集合" item="遍历的对象的变量名" separator="分隔符" open=" ("close=")" 指定开始和结束的符号 >
</foreach>

三.实现

1.需要获得factory这个对象,这里我用静态方法

static SqlSessionFactory factory = null;
static {
Reader reader = null;
try {
reader = Resources.getResourceAsReader("mybatis.xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

factory = new SqlSessionFactoryBuilder().build(reader);

}

2.定义一个接口类,方法的的返回类型,方法名,参数要同mapper.xml下的select等方法一致。

3.在实现类中,调用实现接口方法。

例如:

EmployeeDao dao = session.getMapper(EmployeeDao.class);//EmployeeDao.class反射接口的反射
dao.finByInfo();

4.log4j

log4j需要导入log4j jar包
导入log4j.properties文件

这样通过log4j查看运行日志

猜你喜欢

转载自www.cnblogs.com/oldGeng/p/10279722.html