mybatis01-创建,基本配置,log4j,动态sql,实现
Posted oldgeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>
resultMap 就是id的值
5.#{}和${}区别
#{} 绝大数情况下使用,将其转为占位符
${} 参数类型就会改为对应的带有getset的实体类类型
如果是基本类型(比如"int"),直接使用${} 异常,找不到对应的get方法
参数是直接拼接到sql语句中
6.特殊字符处理
xml小于 < 是特殊字符 处理
<![CDATA[带有<的语句处理]]> 原样输出
或者使用 < 使用实体符号
<![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查看运行日志
以上是关于mybatis01-创建,基本配置,log4j,动态sql,实现的主要内容,如果未能解决你的问题,请参考以下文章
Log4J 系列:log4j 整合SpringMVC+MyBatis 实现日志记录(01)
Mybatis中使用Log4j日志实现(前提创建的是Maven项目)