当前位置: 首页 > news >正文

ntc:iBatis的demo

1. 新建一个web 项目

image

2. 复制两个包过到lib下

image

3. 在src下建立jdbc.properties文件, 内容如下:

# Properties file with JDBC-related settings.
# Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml".
# Targeted at system administrators, to avoid touching the context XML files.

driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://localhost:1433;DatabaseName=school
username=sa
password=sa

4. 建包com.yenange.entity;

5. 做配置文件

<?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> <!-- jdbc.properties代表配置文件的名字 --> <properties resource="jdbc.properties"/> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <!-- $[driver]代表jdbc.propertie中的键 --> <property value="${driver}" name="JDBC.Driver"/> <property value="${url}" name="JDBC.ConnectionURL"/> <property value="${username}" name="JDBC.Username"/> <property value="${password}" name="JDBC.Password"/> </dataSource> </transactionManager> <sqlMap resource="com/yenange/entity/Student.xml"/> </sqlMapConfig>

6.建Student实体类

image

package com.yenange.entity;

public class Student {
private Integer sid;
private String sname;
private Integer sage;
public Student() {
}
public Student(Integer sid, String sname, Integer sage) {
this.sid = sid;
this.sname = sname;
this.sage = sage;
}
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getSage() {
return sage;
}
public void setSage(Integer sage) {
this.sage = sage;
}
}

7.做实体映射文件Student.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="Account"> <!-- 给当前的User类去一个简短的别名,方便引用 --> <typeAlias alias="Student" type="com.yenange.entity.Student" /> <!-- id给结果映射取一个名字,可以想象成div id.后面可以引用 --> <resultMap id="StudentResult" class="Student"> <result property="sid" column="id" /> <result property="sname" column="name" /> <result property="sage" column="age" /> </resultMap> <!-- 对tbl_user表进行查询操作 --> <select id="getAllStudent" resultMap="StudentResult"> select * from tbL_stu </select> <select id="getStudentById" parameterClass="java.lang.Integer" resultMap="StudentResult"> select * from tbL_stu where id=#sid# </select> <!-- ##来包围参数,这里参数必须和User类中的属性名完全一致 --> <insert id="addStudent" parameterClass="Student"> insert into tbL_stu (name,age) values(#sname#,#sage#) </insert> <!-- 更新操作 --> <update id="updateById" parameterClass="Student"> update tbL_stu set name=#sname# where id=#sid# </update> </sqlMap>

8.写测试方法

package com.yenange.entity;
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;

public class StudentDAOTest {
public static void main(String[] args) throws IOException, SQLException {
Reader reader = Resources
.getResourceAsReader("com/yenange/entity/SqlMapConfig.xml");
SqlMapClient sqlmapClient = SqlMapClientBuilder
.buildSqlMapClient(reader);
queryByID(sqlmapClient);
getAllUser(sqlmapClient);
saveUser(sqlmapClient);
updateUser(sqlmapClient);
}

private static void queryByID(SqlMapClient sqlmapClient)
throws SQLException {
Student student=(Student)sqlmapClient.queryForObject("getStudentById", 1001);
System.out.println(student.getSname());
}

private static void saveUser(SqlMapClient sqlmapClient) throws SQLException {
Student student = new Student();
student.setSname("环形");
student.setSage(89);
sqlmapClient.startTransaction();
sqlmapClient.insert("addStudent", student);
sqlmapClient.commitTransaction();
}
private static void updateUser(SqlMapClient sqlmapClient) throws SQLException {
Student student = new Student();
student.setSid(1001);
student.setSname("环形999");
student.setSage(89);
sqlmapClient.startTransaction();
sqlmapClient.insert("addStudent", student);
sqlmapClient.commitTransaction();
}

private static void getAllUser(SqlMapClient sqlmapClient)
throws SQLException {
List<Student> list = sqlmapClient.queryForList("getAllStudent");
for (Student student : list) {
System.out.println(student.getSname());
}
}
}

相关文章:

  • Linux RAID简介
  • 正确理解SOA、SaaS和云计算的关系
  • linux查看各项参数
  • 关于关于--关于网络,关于还是关于
  • 【Demo 0002】Android 提醒框
  • 数据相似性检测算法
  • vc的UI编程PngTextButton控件的适用情况
  • Android中在屏幕上涂鸦的例子
  • 近期备考安排
  • CentOS 配置mysql允许远程登录
  • 并查集回顾
  • 用一个暑假的时间想明白一件事
  • wubi安装ubuntu后迁移到新分区
  • Java多态的一些陷阱
  • 海量空间数据库实施策略-栅格数据 4
  • 【RocksDB】TransactionDB源码分析
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java精华积累:初学者都应该搞懂的问题
  • JS实现简单的MVC模式开发小游戏
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Promise面试题2实现异步串行执行
  • Rancher如何对接Ceph-RBD块存储
  • vue自定义指令实现v-tap插件
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 阿里云前端周刊 - 第 26 期
  • 阿里云应用高可用服务公测发布
  • 码农张的Bug人生 - 见面之礼
  • 使用API自动生成工具优化前端工作流
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • #vue3 实现前端下载excel文件模板功能
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (c语言)strcpy函数用法
  • (Forward) Music Player: From UI Proposal to Code
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (八)c52学习之旅-中断实验
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (转)jdk与jre的区别
  • (转)linux 命令大全
  • (转)项目管理杂谈-我所期望的新人
  • .gitignore文件_Git:.gitignore
  • .NET Core 版本不支持的问题
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net mvc 获取url中controller和action
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .Net6使用WebSocket与前端进行通信
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @FeignClient注解,fallback和fallbackFactory
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [20160902]rm -rf的惨案.txt