/*********************************************************/
>0.ibatis-2.3.4学习总结
ibatis是什么?
ibatis是并不是一个orm框架他是一个sql语句映射工具,
是一个非常灵活的小工具,能够减少很多荣誉的jdbc代码。
>1.学习ibatis需要学习的一些什么概念
//>对于数据源的配置情况
//<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
// "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
//SqlMapConfig --->sql语句映射全局性的配置
// "(properties?,settings?,resultObjectFactory?,typeAlias*,typeHandler*,transactionManager?,sqlMap+)+".
//properties>将连接数据库的参数做为properties进行配置
//settting一些全局性的配置
//resultObjectFactory配置生成结果参数
//typeAlias一些pojo的别名
//typeHandler定义自己的类型处理器
//transactionManager针对crud操作的事物处理器
//sqlMap为每一个实体做映射语句的xml文件
//sqlMap --->sql语句映射
//<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
// "http://ibatis.apache.org/dtd/sql-map-2.dtd">
//在做映射语句前需要知道的
//resultMap-->table怎么映射成为一个pojo
//parameterMap-->pojo怎么映射成table中的列
//什么叫做inline-parameter
//以#pojo_property#的形式指定的参数的方式就是在线指定参数
//什么叫做external-paramter
//通过在外部自定义指定的参数
//什么叫做dymanic-sql
//有时候一个sql可能一口气写不完
//需要程序在运行期间补充才能够构造完的sql
//需要用到动态sql标签
//>动态sql例子
//<select id="testdynamicsql">
// select * from person
// <dynamic-sql prepend="where">
// <iterate conjunction="," open="id in(" close=")" property="idlist">
// #id#
// </iterate>
// </dynamic-sql>
//</select>
//用iterate迭代形成一个in的子句
//能够映射的语句类型
//-1.查询
//0.添加
//1.修改
//2.删除
//3.存储过程
//简单的一对一配置(用户-角色)
/*****************************************************************/
//public class User {
private Integer uid;
private java.lang.String uname;
//private Role role;
//}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
// "http://ibatis.apache.org/dtd/sql-map-2.dtd">
//<sqlMap namespace="t_user">
<resultMap class="com.tansun.model.User" id="userMap">
<result property="uid" column="u_id"/>
<result property="uname" column="uname"/>
// <result property="role" column="urole" select="t_role.getRoleById" />
</resultMap>
<select id="getUsers" resultMap="userMap">
// SELECT * FROM T_USER
</select>
</sqlMap>
/*****************************************************************/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
//<sqlMap namespace="t_role">
// <typeAlias alias="role" type="com.tansun.model.Role"/>
<resultMap class="com.tansun.model.Role" id="roleMap">
<result property="rid" column="r_id"/>
<result property="rname" column="rname"/>
// <result property="prvList" column="r_id" select="t_privilege.getPrvs"/>
</resultMap>
<select id="getRoleById" resultMap="roleMap" parameterClass="int">
//select * from t_role where r_id=#value#
</select>
</sqlMap>
/*****************************************************************/
//简单的多对多配置(角色-权限)
/*****************************************************************/
//角色配置
//public class Role {
private Integer rid;
private java.lang.String rname;
private java.lang.String rdesc;
//private List prvList;
//}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="t_role">
//<typeAlias alias="role" type="com.tansun.model.Role"/>
<resultMap class="com.tansun.model.Role" id="roleMap">
<result property="rid" column="r_id"/>
<result property="rname" column="rname"/>
// <result property="prvList" column="r_id" select="t_privilege.getPrvs"/>
</resultMap>
<select id="getRole" resultMap="roleMap">
// select * from t_role where r_id=#value#
</select>
</sqlMap>
/*****************************************************************/
/*****************************************************************/
//权限配置
//public class Privilege {
private int pid;
private java.lang.String pname;
//private java.lang.String pdesc;
//}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
//<sqlMap namespace="t_privilege">
<typeAlias alias="prv" type="com.tansun.model.Privilege"/>
<resultMap class="prv" id="privilege">
<result property="pid" column="p_id"/>
<result property="pname" column="pname"/>
<result property="pdesc" column="pdesc"/>
</resultMap>
<!-- 通过笛卡尔积查询出满足条件的权限信息列表-->
<select id="getPrvs" resultClass="list" resultMap="privilege">
// select prv.* from t_privilege prv,t_link_rp link where prv.p_id=link.p_id
// and link.r_id=#value#
</select>
</sqlMap>
/*****************************************************************/
public static void main(String[] args) throws SQLException {
SqlMapClient sqlmc = SqlMapClientBuilder
.buildSqlMapClient(TestQuery.class
.getResourceAsStream("cfg.xml"));
//得到role
Role rl = (Role)sqlmc.queryForObject("t_role.getRole", new Integer(1));
System.out.println(rl);
//得到角色多对应的权限
System.out.println(rl.getPrvList());
}
/*********************************************************/
ibatis-2.3.4全面解析(全局性配置,sql语句映射,一对一,多对多)
最新推荐文章于 2021-03-04 04:48:24 发布