ibatis-2.3.4全面解析(全局性配置,sql语句映射,一对一,多对多)

本文详细介绍了Ibatis 2.3.4版本,包括其作为SQL映射工具的角色,数据源配置、全局设置、结果映射、参数映射等核心概念。通过示例展示了动态SQL、一对一和多对多关系的配置,以及如何使用SqlMapClient进行数据查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*********************************************************/
>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());
    }








 
 
 
 
 
 
 
 
 
 
 
 
 
 







/*********************************************************/










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值