Ibatis搭建及配置

本文介绍了Ibatis作为持久层框架的配置过程,强调了在SpringMVC中使用Ibatis时必须实现DAO层的重要性,以及Ibatis与MyBatis在配置上的区别。在Ibatis中,通过方法的id来关联XML文件中的SQL语句,而namespace并非必需。同时,详细说明了DAO层方法返回类型的选择。文章还提到了关键配置文件如pom.xml、db.properties、SqlMapConfig.xml以及UserMapper.xml,并提供了项目的链接。

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

       Ibatis持久层框架是MyBatis的前身, 在springMVC中Ibatis与MyBatis使用不同,必须实现dao层,之前由于dao层没有实现出现了许多bug,这个地方比较容易出错。MyBatis中mapper接口与xml文件之间通过namespace一一对应进行绑定,Ibtis中namespace不是必要的通过id将方法与xml文件sql语句的执行相关联,Ibatis中dao层方法的return语句写法上也有讲究。

        pom配置文件:

                <!-- ibatis包 -->
		<dependency>
			<groupId>org.apache.ibatis</groupId>
			<artifactId>ibatis-sqlmap</artifactId>
			<version>2.3.4.726</version>
		</dependency>

		<!-- 数据库连接 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency

    db.properties数据库配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/sim?useUnicode=true&characterEncoding=utf8
username=root
password=uroot

    dao层配置

    <!-- 加载数据库的配置文件 -->
	<util:properties id="dbConfig"
		location="classpath:db.properties" />

	<!-- 配置数据源 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="#{dbConfig.driver}"></property>
		<property name="url" value="#{dbConfig.url}"></property>
		<property name="username" value="#{dbConfig.username}"></property>
		<property name="password" value="#{dbConfig.password}"></property>
	</bean>

	<!-- 配置sqlMapClient对象 -->
	<bean id="sqlMapClient"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="configLocation"
			value="classpath:SqlMapConfig.xml"></property>
	</bean>

	<!-- 根据sqlMapClient创建SqlMapClient模板类 -->
	<bean id="sqlMapClientTemplate"
		class="org.springframework.orm.ibatis.SqlMapClientTemplate">
		<property name="sqlMapClient">
			<ref bean="sqlMapClient" />
		</property>
	</bean>

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig        
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"        
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>

	<!-- 映射文件 -->
	<sqlMap resource="mappers/UserMapper.xml" />
</sqlMapConfig>  

BaseDao 重要 不实现会报错

public class BaseDao extends SqlMapClientDaoSupport{
	//通过bean名称注入   
    @Resource(name="sqlMapClient")  
    private SqlMapClient sqlMapClient; 
    
    //完成sqlMapClient初始化工作   
    @PostConstruct  
    public void initSqlMapClient(){  
        super.setSqlMapClient(sqlMapClient);  
    }  
}

UserDao继承BaseDao

@Component  //将UserDao类注入到bean里面 
public class UserDao extends BaseDao{
	//找到所有未删除的用户
	//告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
	@SuppressWarnings("unchecked")  
	public List<User> selectUsers() throws Exception{  
		return getSqlMapClientTemplate().queryForList("selectUsers");
	}
	//根据用户名寻找用户
	public User getUserByName(String name) throws Exception{  
		return (User) getSqlMapClientTemplate().queryForObject("findUserByName",name);  
	}  
	//根据id删除用户
	public boolean deleteUser(int id) throws Exception{  
		int result = getSqlMapClientTemplate().delete("deleteUser", id);  
		return result > 0 ? true : false;  
	} 
}

映射文件UserMapper.xml

<?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="User">
	<typeAlias alias="User" type="cn.ebiz.ibatis.bean.User" /><!--起别名 -->
	<!-- 查找所有未删除用户 -->
	<select id="selectUsers" resultClass="User">
		select
			id,
			name,
			real_name as realName,
			email,
			address,
			create_time as createTime,
			is_delete as isDelete
		from
			querry
		where
			is_delete=0;
	</select>
	<!-- 根据用户名找到用户 ## 防止sql注入 -->
	    <select id="findUserByName" resultClass="User" parameterClass="string">    
		select
			id,
			name,
			real_name as realName,
			email,
			address,
			create_time as createTime,
			is_delete as isDelete
		from
			querry
		where
			is_delete=0
		and	
			name=#name#;
    </select> 
	<!-- 根据id删除用户 -->
	<update id="deleteUser" parameterClass="int">    
        update 
        	querry  
        set
            is_delete=1  
        where 
        	id=#id#  
    </update>  
</sqlMap>

附:项目链接 点击打开链接


SqlMapConfig.xml 中配置数据库连接不一样

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig        
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"        
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<!-- 加载数据库的配置文件 -->
	<properties resource="db.properties"></properties>
	<!-- 配置数据源 -->
	<transactionManager type="JDBC"> <!--定义了ibatis的事务管理器有3中(JDBC,JTA,EXTERNAL) -->
		<dataSource type="POOLED">
			<property name="driver" value="${jdbc.driver}" />
			<property name="url" value="${jdbc.url}" />
			<property name="username" value="${jdbc.username}" />
			<property name="password" value="${jdbc.password}" />
		</dataSource>
	</transactionManager>
	<!-- 实体映射文件 -->
	<sqlMap resource="mapper/User.xml" />
</sqlMapConfig> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值