标签:hashmap sele 动态sql 环境搭建 出现 jvm tor 通用 struts框架
初学时,感觉有点意思,最后发现,还是有一点缺点,MyBatis对数据库要求很严格,只能一个数据库,不能随便移植,对开发人员的编码能力有很高的要求。。。
框架:
1、Spring 框架
2、Spring MVC框架
3、Struts框架
4、MyBatis 框架
5、Hibernate 框架
MyBatis框架: 优秀的数据持久层框架,在实体类/持久类与数据库表之间建立映射关系,是一种半ORM的实现。
优点:
缺点:
ORM 简介:ORM(Object/Relational Mapping)即对象/关系映射,是一种数据持久化技术。
特点: 基于SQL语法,简单易学 能了解底层封装过程 SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度 方便程序代码调试
MyBatis 环境搭建:
下载需要的jar文件
MyBatis依赖包中文件说明:
MyBatis-config.xml文件常用元素:
注意:元素节点有顺序,不按顺序报错
Mybatis三大核心对象:
SqlSessionFactoryBuilder的作用:
特点: 用过即丢,最佳范围存在于方法体内,局部变量
SqlSessionFactory:
SqlSession:(sqlSession.selectList()、sqlSession.getMapper(Mapper.class)调用接口方法)
注意:(在SqlSession里可以执行多次SQL语句,但一旦关闭了SqlSession就需要重新创建)
SQL映射文件(顶级元素):
parameterType:
resultType :直接表示返回类型(手动映射)
resultMap :对外部resultMap的引用(自动映射)
注意:(二者不能同时存在,本质上都是Map数据结构)
resultMap的基本配置:
association:一对多
association的子元素:
collection:(集合)
相关代码:
<resultMap id=“userMap” type=“User”>
<id property=“id” column=“id”/>
<result property=“usercode” column=“usercode”/>
<!-- 一对多,多对多的关系 -->
<!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->
<collection ofType=“Role” property=“role”>
<id property=“id” column=“id”/>
<resut property=“rolecode” column=“rolecode”/>
</collection>
<resultMap>
resultMap自动映射级别:
MyBatis缓存:
<settings>
<setting name = “cacheEnabled” value=”true”/>
</settings>
<cache eviction="FIFO" flushInterval="60000"
size="512" readOnly="true"/>
<select id="selectAll" resultType="Emp" useCache="true">
动态SQL元素:
if:利用if实现简单的条件选择
<select id="listProduct" resultType="Product">
select * from product
<if test="name!=null">
where name like concat(‘%‘,#{name},‘%‘)
</if>
</select>
如果if里的test 表达式不成立 那么就不会追加if里的代码
choose(when,otherwise):相当于java中switch语句,通常与when和otherwise搭配
提供了任何条件,就进行条件查询,否则就使用id>1这个条件。 依次判断 when 如果 其中一个when成立 就结束。 如果when没有一个成立 就执行otherwise
where:简化SQL语句中where的条件判断
<select id="listProduct" resultType="Product">
select * from product
<where>
<if test="name!=null">
and name like concat(‘%‘,#{name},‘%‘)
</if>
<if test="price!=null and price!=0">
and price > #{price}
</if>
</where>
</select>
where标签会进行自动判断如果任何条件都不成立,那么就在sql语句里就不会出现where关键字如果有任何条件成立,会自动去掉多出来的 and 或者 or。
set:解决动态更新语句
trim:可以灵活地去掉多余的关键字
foreach:迭代一个集合,通常用于in条件
trim属性
foreach基本属性:
collection:最关键并最容易出错的属性,
属性值:
choose(when、otherwise):
相当于(switch)代码:
<choose>
<when test ="条件1"> …</when>
<when test ="条件2"> …</when>
<when test ="条件3"> …</when>
…
<otherwise>…</otherwise>
</choose>
分页: 起始位置下标=(页码-1)*页面容量
增删改查关键代码:
添加:insert into 表名(列名) values()
删:delete from 表名 where id=。。。。
改:update 表名 set 列名=#{},列名=#{} where id=。。。。
查:select * from 表名 inner join 表名 on x=x where group by order by limit 起始行,行数
Mybatis-config.xml 关键代码:
<configuration>
<properties resource=“database.properties”/>
<settings>
<setting name=“logImpl” value=“LOG4J”/>
</settings>
<environments default=“a”>
<environment id=“a”>
<property name==“driver” value”${driver}”/>
<property name==“url” value”${url}”/>
<property name==“username” value”root”/>
<property name==“password” value”ok”/>
</environment>
</environments>
<mappers>
<mapper resource=“cn/dao/UserMapper.xml”/></mappers>
</configuration>
标签:hashmap sele 动态sql 环境搭建 出现 jvm tor 通用 struts框架
原文地址:https://www.cnblogs.com/Mxmeng/p/9198549.html