最近2天在学ibatis,心里也有一些心得,就把它写下来了。

首先是配置一下ibatis的环境,添加ibatis2.X.jar,mysql-connection-bin.5.1.8.jar,建立一个web项目:

0、写个类User.jsva 有属性:.....(自己写),建个表:user.sql

1、先建一个数据库文件dataSource.properties,内容如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root

2、这是ibatis的核心文件:sqlmap-config.xml,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
   
<sqlMapConfig>
 <properties resource="dataSource.properties"></properties>
 <transactionManager type="JDBC">
  <dataSource type="SIMPLE">
   <property name="JDBC.Driver" value="${jdbc.driver}" />
   <property name="JDBC.ConnectionURL" value="${jdbc.url}" />
   <property name="JDBC.Username" value="${jdbc.username}" />
   <property name="JDBC.Password" value="${jdbc.password}" ></property>
  </dataSource>
 </transactionManager>
 <sqlMap resource="com/resource/User.xml" />
</sqlMapConfig>

3、建立一个user.xml文件,该文件里面写的是sql语句,这就是ibatis比hibernate查询数据更灵活的优势所在,简单的CRUD:

<?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>
 <!-- 定义类别名 -->
 <typeAlias alias="User" type="com.bean.User" />
 
 <!-- 查询所有 -->
 <select id="getAllUsers" resultClass="User">
  select *
  from user
 </select>
 
 <!-- 添加 -->
 <insert id="saveUser" parameterClass="User">
  insert into user (name,password,sex,address,phone,email)
  values
  (#name#,#password#,#sex#,#address#,#phone#,#email#)
  <selectKey resultClass="int" keyProperty="id">
   select last_insert_id()
  </selectKey>
 </insert>
 
 <!-- 根据ID查询 -->
 <select id="getById" parameterClass="int" resultClass="User">
  select * from user u where u.id = #id#
 </select>
 
 <!-- 删除 -->
 <delete id="deleteUser" parameterClass="int">
  delete from user  where id = #id#
 </delete>
 
 <update id="updateById" parameterClass="User">
  update user u set u.name=#name#,u.password=#password#,u.sex=#sex#,u.address=#address#,u.phone=#phone#,u.email=#email#
  where u.id=#id#
 </update>
</sqlMap>

4、最后是测试。写个main()方法,测试一下是否搭建成功

public class IbatisDemo {

public static void main(String[] args) throws IOException, Exception {
//  list();
//  User user = new User();
//  user.setName("ibatis");
//  user.setPassword("123");
//  user.setSex("男");
//  user.setAddress("广州天河");
//  user.setPhone("1324567");
//  user.setEmail("123@qq.com");
//  add(user);

// get(24);
  
//  User user = new User();
//  user.setName("ibatis2");
//  user.setPassword("1232");
//  user.setSex("男");
//  user.setAddress("广州天河2");
//  user.setPhone("13245672");
//  user.setEmail("123@qq.com2");
//  user.setId(23);
//  update(user);
  
//  delete1(23);

}
 
 public static void list() throws IOException, SQLException{
  Reader reader = Resources.getResourceAsReader("sqlmap-config-user.xml");
  SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  List<User> list = sqlMapClient.queryForList("getAllUsers");
  for(User user : list){
   System.out.println(user);
  }
 }

public static void add(User user) throws IOException, SQLException{
  Reader reader = Resources.getResourceAsReader("sqlmap-config-user.xml");
  SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  sqlMapClient.insert("saveUser",user);
 }
 public static void get(Integer id) throws IOException, SQLException{
  Reader reader = Resources.getResourceAsReader("sqlmap-config-user.xml");
  SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  //可以实现 方法一:
  //List<User> list = sqlMapClient.queryForList("getById",id);
  //for(User user:list){
  // System.out.println("----------------"+list.size());
  //}
  //方法2:
  User user0 = (User) sqlMapClient.queryForObject("getById",id);
  System.out.println("----------------"+user0.getName());
 }
 
 public static void delete1(int id) throws IOException, SQLException{
  Reader reader = Resources.getResourceAsReader("sqlmap-config-user.xml");
  SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  sqlMapClient.delete("deleteUser", id);
 }
 
 public static void update(User user) throws IOException, SQLException{
  Reader reader = Resources.getResourceAsReader("sqlmap-config-user.xml");
  SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  sqlMapClient.update("updateById", user);
 }
}

ibatis框架文件配置的更多相关文章

  1. ssm框架文件配置

    1 简介 Spring MVC (web level),采取 MVC 架构,意图取代麻烦的 Servlet 写法,简化 web 层 MyBatis (dao level),意图取代 jdbc 操作数据 ...

  2. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  3. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  4. FastAPI框架入门 基本使用, 模版渲染, form表单数据交互, 上传文件, 静态文件配置

    安装 pip install fastapi[all] pip install unicorn 基本使用(不能同时支持,get, post方法等要分开写) from fastapi import Fa ...

  5. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  6. Spring框架入门之基于xml文件配置bean详解

    关于Spring中基于xml文件配置bean的详细总结(spring 4.1.0) 一.Spring中的依赖注入方式介绍 依赖注入有三种方式 属性注入 构造方法注入 工厂方法注入(很少使用,不推荐,本 ...

  7. yaf框架学习文件配置

    文件配置: 在配置php支持yaf的时候,可以设置一个参数yaf.environ:把本地开发设置成develop.测试环境配置成test.生产环境配置成product. [yaf] extension ...

  8. 关于lnmp下 phalcon和tp框架下的nginx文件配置

    vim /etc/nginx/sites-available/default   进入修改目录 1.正常项目配置 server { listen 80 default_server; listen [ ...

  9. Django(五)框架之模板继承和静态文件配置

    https://www.cnblogs.com/haiyan123/p/7731959.html 一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% end ...

随机推荐

  1. DTCMS列表页自定义参数。

    1.频道管理中,URL配置,增加一个参数person_id 2.在photo_list.html模板页中,添加以下代码 <!--C#代码--> <%csharp%> strin ...

  2. PHP版本中的VC6,VC9,VC11,TS,NTS区别

    以windows为例,看看下载到得php zip的文件名 php-5.4.4-nts-Win32-VC9-x86.zip VC6:legacy Visual Studio 6 compiler,是使用 ...

  3. Requests库的几种请求 - 通过API操作Github

    本文内容来源:https://www.dataquest.io/mission/117/working-with-apis 本文的数据来源:https://en.wikipedia.org/wiki/ ...

  4. MySQL性能优化的最佳20+套经验

      今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操 ...

  5. NAND的一些相关概念

    chipsize:整个NAND FLASH 的大小,单位为MB pagesize:一页的大小,单位为字节Byte erasesize:最小擦除大小,单位为字节Byte   NAND写操作基本单位是页, ...

  6. Swift和OC,是编译型语言、解释性语言、运行时语言

    首先需要明确的一点是,什么是编译型语言和解释性语言 编译型语言,就是在其执行过程中需要先将其经过编译成机器码来给计算机识别的,其执行效率就会比较高这个是显而易见的,常见比如:C.C++ 而解释型语言, ...

  7. 3157: 国王奇遇记 & 3516: 国王奇遇记加强版 - BZOJ

    果然我数学不行啊,题解君: http://www.cnblogs.com/zhuohan123/p/3726933.html const h=; var fac,facinv,powm,s:..]of ...

  8. 1069: [SCOI2007]最大土地面积 - BZOJ

    Description 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大.Input 第1行一个正整数N,接下来N行,每行2个数x,y, ...

  9. MyEclipse2015破解版_MyEclipse 2015 stable 2.0 稳定版 破解日志

    前言:在MyEclipse 2015 Stable 1.0下载安装破解日志(http://www.cnblogs.com/wql025/p/5161979.html)一文中,笔者主要讲述了该版本的破解 ...

  10. Mongo:将查询结果转换为自定义类

    1.自定义类 public class MyClass { public string Name { get; set; } public int Corners { get; set; } } 2. ...