ibatis项目搭建

来源:互联网 发布:智慧旅游大数据平台 编辑:程序博客网 时间:2024/06/07 09:39

ibatis提供了pojo到数据库表的映射机制,程序员编写SQL语句和所需参数,通过映射配置文件,返回结果字段映射到指定的POJO


1.新建一个java project项目,项目添加两个jar包,一个是ibatis,一个是mysql数据库连接的jar包



2.两个包,com.bean和com.resource,resource这个包要右键,buld path——use as source folder,不然找不到配置文件


3.数据库连接相关配置,sqlmap_mysql.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"          "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">         <sqlMapConfig>            <!-- 基本设置 -->      <!-- cacheModelsEnabled:是否开启缓存机制 -->    <!-- enhancementEnabled:是否启用字节码增强机制 -->   <!-- errorTracingEnabled:是否启用错误处理机制 -->    <!-- lazyLoadingEnabled:是否启用延迟加载机制 -->    <!--     maxRequests:最大并发请求数    maxSessions:最大session数    maxTransactions:最大并发事物数    useStatementNamespaces:是否启用名称空间     -->   <settings cacheModelsEnabled="false" enhancementEnabled="false" errorTracingEnabled="false"              lazyLoadingEnabled="false" maxRequests="300" maxSessions="300"                maxTransactions="300" useStatementNamespaces="false"/>                      <!-- 数据访问相关配置,transactionManager定义了ibatis的事务管理器,有3种(JDBC,JTA,EXTERNAL) -->    <transactionManager type="JDBC">     <!-- 数据源链接信息,type有3中类型(SIMPLE,DBCP,JNDI) -->         <dataSource type="SIMPLE">              <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />              <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/myWeb?characterEncoding=UTF-8" />              <property name="JDBC.Username" value="root" />              <property name="JDBC.Password" value="root" />          </dataSource>      </transactionManager>              <!-- 指定映射文件的位置 -->    <sqlMap resource="com/bean/user-mapping.xml"/>        </sqlMapConfig>

4.新建一个pojo,user.java

package com.bean;/** * 用户pojo *  * @author mona *  */public class User {// idprivate int id;// 登录账号private String username;// 登录密码private String password;// 真是姓名private String realname;// 所在省份private String province;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getRealname() {return realname;}public void setRealname(String realname) {this.realname = realname;}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}}

5.新建一个用户pojo映射配置文件,user-mapping.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap><!--设置映射类别名  --><typeAlias alias="User" type="com.bean.User"/><!-- 设置映射的字段,数据库字段和类属性映射 --><resultMap class="user" id="user.getuser"><result column="id" property="id"/><result column="username" property="username"/>  <result column="password" property="password" />  <result column="realname" property="realname"/>  <result column="province" property="province"/>  </resultMap><!-- parameterClass:传入的参数类型,可以是对象,例如user,不区分大小写,也可以是Integer或者hashmap --><!-- 插入操作 --><insert id="insertUser" parameterClass="user"> <![CDATA[         INSERT INTO user( username, password, realname, province)         VALUES(#username#, #password#, #realname#, #province#)         ]]>  </insert><!-- 删除操作 --><delete id="deleteUserByID" parameterClass="Integer">DELETE FROM user WHERE id = #id#</delete><!-- 修改操作 --><update id="updateUser" parameterClass="user">UPDATE user SET username=#username#, password=#password#, realname=#realname#, province=#province# where id = #id#</update><!-- 根据ID查询单条信息,如果用resultMap,这里的值要和开始的resultMap中的id相同,如果要返回其他数据类型,用resultClass,例如<pre name="code" class="html">resultClass="HashMap"--><select id="selectUserByID" parameterClass="Integer" resultMap="user.getuser">SELECT * FROM USER WHERE id = #id#</select></sqlMap>


</pre><pre>


6.最后写个测试类,测试效果

package com.bean;import java.io.IOException;import java.io.Reader;import java.sql.SQLException;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class MainTest {// main测试程序public static void main(String[] args) throws SQLException {SqlMapClient sqlMapClient = getSqlMapClient();// 插入操作----------------------------------------------/* * User user = new User(); user.setId(2); user.setUsername("admin"); * user.setPassword("admin"); user.setRealname("管理员"); * user.setProvince("安徽省"); */// insertUser对应的是,user-mapping.xml文件中insert插入操作的id值// sqlMapClient.insert("insertUser", user);// 删除操作----------------------------------------------int id = 2;// sqlMapClient.delete("deleteUserByID", id);// 修改操作----------------------------------------------// sqlMapClient.update("updateUser", user);// 查询操作----------------------------------------------// Map user = (Map) sqlMapClient.queryForObject("selectUserByID", id);// System.out.println(user.get("realname"));User user = (User) sqlMapClient.queryForObject("selectUserByID", id);System.out.println(user.getRealname());}/** * SqlMapClient,ibatis接口,对sql执行和批处理 *  * @return */public static SqlMapClient getSqlMapClient() {SqlMapClient sqlMapClient;// 加载数据库连接配置文件String resource = "sqlmap_mysql.xml";Reader reader;try {reader = Resources.getResourceAsReader(resource);sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);} catch (IOException e) {sqlMapClient = null;e.printStackTrace();}return sqlMapClient;}}




0 0
原创粉丝点击