ibatis的使用
ibatis基本jar包
ibatis-xx .jar
mysql-connector.jar
配置文件:
实体类的xml配置
---------和实体类、表操作相关的xml配置,完成增删改查-----------
#name#和#pwd#对应User实体类中的属性名.
再需要注意的是,在ibatis和mybatis中,namespace都很重要,它是上级配置文件找到该实体xml文件的节点。具体作用,看下边实现类中解释。
<sqlMap namespace="userMy">
<!-- 别名-->
<typeAlias alias="user" type="model.User"/>
<!-- parameterClass 传值类型 id为操作的标识,在实现类中使用-->
<insert id="addUser" parameterClass="user">
insert into user (name,pwd) values(#name#,#pwd#);
</insert>
<delete id="deleteUser" parameterClass="java.lang.Integer">
delete from user where id=#id#
</delete>
<update id="updateUser" parameterClass="user">
update user set name=#name#,pwd=#pwd# where id=#id#
</update>
<!-- resultClass:返回类型 -->
<select id="quaryAll" resultClass="user">
select * from user
</select>
</sqlMap>
sqlMapConfig.xml:
<sqlMapConfig>
<!--1.配置事务管理,主要参数:数据源 -->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/yourdb" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="root" />
</dataSource>
</transactionManager>
<!-- 2.sql操作的xml文件 -->
<sqlMap resource ="cn/entity/**.xml">
<sqlMap resource="cn/entity/School.xml" />
</sqlMapConfig>
实现类
public class UserDaoImp implements UserDao {
private static SqlMapClient sqlMapClient = null;
static{
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public User selectById(int id) {
// TODO Auto-generated method stub
try {
//不同操作对应不同的方法 都是通过SqlMapClient
//根据需求选择配置文件中的id使用
//嘿嘿,在这里,前边实体类xml文件中的namespace节点配置就有用了
//如果没有配置,在这里直接用id增删改查,就有可能因为Id重名而报错,所有namespace
//就是为了防止多个实体类xml配置文件中的id冲突;
return (User) sqlMapClient.queryForObject("selectById",id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public boolean addUser(User user) {
// TODO Auto-generated method stub
try {
sqlMapClient.startTransaction();
sqlMapClient.insert("addUser", user);
sqlMapClient.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}
---------------为了提高代码复用性
private static SqlMapClient sqlMapClient = null;
static{
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
可以放在一个父类中,让子类继承使用
接下来就可以去使用了……