mybatis使用示例
来源:互联网 发布:wish产品优化 编辑:程序博客网 时间:2024/06/03 21:26
下面的代码只是个人在练习mybatis的使用,如果发现有什么错误,请指出,不胜感激。
1、数据库,我这里使用的是MySQL数据库,首先在数据库中新建一个表,并插入适当的数据。
#新建表DROP TABLE IF EXISTS SYSTEM_USER;CREATE TABLE SYSTEM_USER ( #创建一个带自增长的ID列 SYSUSER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, CONSTRAINT SYSTEM_USER_PK PRIMARY KEY(SYSUSER_ID), SYSUSER_NAME VARCHAR(50), CONSTRAINT SYSTEM_USER_UK UNIQUE(SYSUSER_NAME), SYSUSER_PASSWORD VARCHAR(50) NOT NULL, EFFECTIVE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, EXPIRE_DATE TIMESTAMP DEFAULT '2037-01-01 00:00:00' );#设置自增长的开始值ALTER TABLE SYSTEM_USER AUTO_INCREMENT = 10001; #插入数据INSERT INTO SYSTEM_USER(SYSUSER_NAME, SYSUSER_PASSWORD) VALUES( 'USER1', 'USER11'); INSERT INTO SYSTEM_USER(SYSUSER_NAME, SYSUSER_PASSWORD) VALUES( 'USER2', 'USER22'); INSERT INTO SYSTEM_USER(SYSUSER_NAME, SYSUSER_PASSWORD) VALUES( 'USER3', 'USER33');COMMIT;
2、新建一个java工程,将需要的jar包导入工程,我这里使用的两个jar包是:ibatis-2.3.0.677.jar,mysql-connector-java-5.1.6-bin.jar。
3、在工程src目录下(后面的配置文件我都放在这个目录下面),新建一个jdbc.properties文件,填写数据库的配置。
jdbc.driverClassName=com.mysql.jdbc.Driver#数据库的IP地址,端口号,数据库的名称jdbc.url=jdbc:mysql://localhost:3306/laosan#用户名jdbc.username=root#密码jdbc.password=520
4、新建一个SqlMapConfig.xml文件,填写ibatis的主要配置,我上一篇文章中专门介绍了ibatis配置文件的写法,这里不再重复,有需要的朋友可以在我博客中找找。
<?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="jdbc.properties" /><settings cacheModelsEnabled="true" enhancementEnabled="true"lazyLoadingEnabled="true" maxRequests="20" maxSessions="10"maxTransactions="5" useStatementNamespaces="false" /><transactionManager type="JDBC"><dataSource type="SIMPLE"><property name="JDBC.Driver" value="${jdbc.driverClassName}" /><property name="JDBC.ConnectionURL" value="${jdbc.url}" /><property name="JDBC.Username" value="${jdbc.username}" /><property name="JDBC.Password" value="${jdbc.password}" /></dataSource></transactionManager><sqlMap resource="testSql.xml" /></sqlMapConfig>
5、新建一个testSql.xml文件,填写在映射关系和SQL等等,关于这种文件的写法,在上一篇文章中同样有介绍。
<?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="TestSQL"><typeAlias alias="test" type="com.zlc.model.TestModel" /><resultMap id="testResult" class="test"><result property="id" column="SYSUSER_ID" /><result property="name" column="SYSUSER_NAME" /><result property="password" column="SYSUSER_PASSWORD" /><result property="effDate" column="EFFECTIVE_DATE" /><result property="expDate" column="EXPIRE_DATE" /><result property="rowCount" column="ROWCOUNT" /></resultMap><select id="testSelectAll" resultMap="testResult"parameterClass="test"><![CDATA[SELECT t.*,]]>(SELECT COUNT(*) FROM SYSTEM_USER) AS ROWCOUNTFROM SYSTEM_USER t</select><update id="testUpdate" parameterClass="test">UPDATE SYSTEM_USER t<dynamic prepend="set"><isNotEmpty prepend="and" property="name"> t.SYSUSER_NAME= #name#</isNotEmpty><isNotEmpty prepend="," property="password">t.SYSUSER_PASSWORD=#password#</isNotEmpty><isNotEmpty prepend="," property="effDate">t.effective_date=#effDate#</isNotEmpty><isNotEmpty prepend="," property="expDate">t.EXPIRE_DATE=#expDate#</isNotEmpty></dynamic><dynamic prepend="where"><isNotEmpty prepend="and" property="id"> t.SYSUSER_ID = #id#</isNotEmpty></dynamic></update><insert id="testInsert" parameterClass="test">INSERT INTO SYSTEM_USER(SYSUSER_NAME, SYSUSER_PASSWORD, EFFECTIVE_DATE, EXPIRE_DATE)VALUES(#name#, #password#, #effDate#, #expDate#);</insert><delete id="testDelete" parameterClass="int">DELETE FROM SYSTEM_USERWHERE SYSUSER_ID = #id#</delete><sql id="test_condition_sql"><isNotEmpty prepend="and" property="effDate">t.EFFECTIVE_DATE =#effDate#</isNotEmpty><isNotEmpty prepend="and" property="expDate">t.EXPIRE_DATE =#expDate#</isNotEmpty></sql><sql id="test_count_sql">SELECT COUNT(1) FROM SYSTEM_USER t WHERE 1 = 1<include refid="test_condition_sql" /></sql><select id="testSelectForPage" parameterClass="test" resultMap="testResult"> <![CDATA[ SELECT t.*, ]]>(<include refid="test_count_sql" />) as rowCountFROM SYSTEM_USER tWHERE 1 = 1<include refid="test_condition_sql" /></select></sqlMap>
6、写一个模型类。
/**================================================= * 版权:laosan版权所有 * 包名:com.zlc.model * 文件:TestModel.java * 日期:2014-12-22 下午2:16:08 * 作者:laosan * 说明:ibatis模型类 *==================================================*/package com.zlc.model;import java.sql.Timestamp;/** * @ClassName TestModel * @Description ibatis模型类 * * @author laosan * @date 2014-12-22 下午2:16:08 */public class TestModel{ private Integer id; private String name; private String password; private Timestamp effDate; private Timestamp expDate; private Integer rowCount; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Timestamp getEffDate() { return effDate; } public void setEffDate(Timestamp effDate) { this.effDate = effDate; } public Timestamp getExpDate() { return expDate; } public void setExpDate(Timestamp expDate) { this.expDate = expDate; } public Integer getRowCount() { return rowCount; } public void setRowCount(Integer rowCount) { this.rowCount = rowCount; } @Override public String toString() { return "TestModel [id=" + id + ", name=" + name + ", password=" + password + ", effDate=" + effDate + ", expDate=" + expDate + ", rowCount=" + rowCount + "]"; } }
7、写一个接口,这里主要是为了接近项目中的一般写法为进行这些步骤,因为只是练习,所以没有将异常的处理考虑进来。
/**================================================= * 版权:laosan版权所有 * 包名:com.zlc.dao * 文件:TestDao.java * 日期:2014-12-22 下午2:14:34 * 作者:laosan * 说明:练习ibatis *==================================================*/package com.zlc.dao;import java.util.List;import com.zlc.model.TestModel;/** * @ClassName TestDao * @Description DAO层接口 * * @author laosan * @date 2014-12-22 下午2:14:34 */public interface TestDao{ /** * @MethodName addData * @Description 增加数据 * * @author laosan * @date 2014-12-22 下午2:20:38 * @param model */ void addData(TestModel model); /** * @MethodName deleteById * @Description 删除数据 * * @author laosan * @date 2014-12-22 下午2:21:10 * @param id */ void deleteById(Integer id); /** * @MethodName updateDate * @Description 修改数据 * * @author laosan * @date 2014-12-22 下午2:22:03 * @param model */ void updateDate(TestModel model); /** * @MethodName queryAll * @Description 查询所有数据 * * @author laosan * @date 2014-12-22 下午2:24:00 * @return */ List<TestModel> queryAll(); /** * @MethodName queryByConditionAndPages * @Description 根据条件分页查询 * * @author laosan * @date 2014-12-22 下午2:25:25 * @param model * @param pages * @param pageSize * @return */ List<TestModel> queryByConditionAndPages(TestModel model, int pages, int pageSize);}
8、实现第7步的接口。
/**================================================= * 版权:laosan版权所有 * 包名:com.zlc.dao.ibatis * 文件:TestDaoIbatis.java * 日期:2014-12-22 下午2:28:31 * 作者:laosan * 说明:DAO实现层 *==================================================*/package com.zlc.dao.ibatis;import java.io.IOException;import java.io.Reader;import java.sql.SQLException;import java.util.List;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;import com.zlc.dao.TestDao;import com.zlc.model.TestModel;/** * @ClassName TestDaoIbatis * @Description DAO实现层 * * @author laosan * @date 2014-12-22 下午2:28:31 */public class TestDaoIbatis implements TestDao{ private static SqlMapClient sqlMapClient = null; // 读取ibatis配置文件 // 其实使用ibatis,只要掌握了下面的这部分静态代码块,使用起来就非常简单。 static { try { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public void addData(TestModel model) { try { sqlMapClient.insert("testInsert", model); } catch (SQLException e) { e.printStackTrace(); } } @Override public void deleteById(Integer id) { try { sqlMapClient.delete("testDelete", id); } catch (SQLException e) { e.printStackTrace(); } } @Override public void updateDate(TestModel model) { try { sqlMapClient.update("testUpdate", model); } catch (SQLException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") @Override public List<TestModel> queryAll() { List<TestModel> results = null; try { results = sqlMapClient.queryForList("testSelectAll"); } catch (SQLException e) { e.printStackTrace(); } return results; } @SuppressWarnings("unchecked") @Override public List<TestModel> queryByConditionAndPages(TestModel model, int pages, int pageSize) { List<TestModel> results = null; try { int skip = (pages - 1) * pageSize; results = sqlMapClient.queryForList("testSelectForPage", model, skip, pageSize); } catch (SQLException e) { e.printStackTrace(); } return results; }}
9、代码已经完成了,最后写一个测试类进行测试。
/**================================================= * 版权:laosan版权所有 * 包名:com.zlc.test * 文件:Test.java * 日期:2014-12-22 下午3:22:31 * 作者:laosan * 说明:测试类 *==================================================*/package com.zlc.test;import java.sql.Timestamp;import java.util.Date;import java.util.List;import com.zlc.dao.TestDao;import com.zlc.dao.ibatis.TestDaoIbatis;import com.zlc.model.TestModel;/** * @ClassName Test * @Description 测试类 * * @author laosan * @date 2014-12-22 下午3:22:31 */public class Test{ public static void main(String[] args) { TestDao dao = new TestDaoIbatis(); // 插入数据 // TestModel model = new TestModel(); // model.setName("testName01"); // model.setPassword("TestName01"); // model.setEffDate(new Timestamp(new Date().getTime())); // dao.addData(model); // 删除数据 // dao.deleteById(Integer.valueOf(10001)); // 修改数据 // TestModel model = new TestModel(); // model.setId(Integer.valueOf(10002)); // model.setName("updateName"); // model.setExpDate(new Timestamp(new Date().getTime())); // dao.updateDate(model); // 查询全部数据 // List<TestModel> results = dao.queryAll(); // System.out.println(results); // 分页查询数据 TestModel model = new TestModel(); List<TestModel> resultsList = dao.queryByConditionAndPages(model, 2, 2); System.out.println(resultsList); }}
0 0
- mybatis使用示例
- Mybatis使用示例
- mybatis示例
- 上手Mybatis,最基本基于xml配置使用示例
- MyBatis(1)--MyBatis入门示例
- MyBatis(iBatis)入门示例!!!
- MyBatis入门示例
- MyBatis+Spring整合示例
- MyBatis+Spring整合示例
- MyBatis入门示例
- MyBatis入门配置示例
- MyBatis+Spring整合示例
- MyBatis 查询示例
- Mybatis 示例之 Association
- Mybatis 示例之 SelectKey
- MyBatis入门示例
- Mybatis分页插件 - 示例
- Spring+Mybatis开发示例
- LINUX下手动添加swap分区
- SAE笔记django 与 cron
- LeetCode Fraction to Recurring Decimal
- I2C打印
- iOS形成静态库方法
- mybatis使用示例
- StarUML使用
- 通过设置子窗体透明度,解决C# winform 子窗体设置背景图卡的问题
- libxml2对XML文件的
- confirm用法
- Initializing a Build Environment
- app审核问题
- 【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
- SAP ABAP编程 FOR ALL ENTRIES IN使用指南 将表与内表串联