以mysql为例:

一、需要的架包:mybatis.jar和mysql-connector-java.jar

二、一般会有两类配置文件:数据库配置文件和要执行的sql语句

数据库配置文件(配置文件中有关数据库的信息可以直接配置也可以通过properties文件进行配置):
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
  3. <configuration>
  4. <properties resource="db.properties"/>
  5. <environments default="development">
  6. <environment id="development">
  7. <transactionManager type="JDBC" />
  8. <!-- 配置数据库连接信息 -->
  9. <dataSource type="POOLED">
  10. <!-- <property name="driver" value="com.mysql.jdbc.Driver" />
  11. <property name="url" value="jdbc:mysql://localhost:3306/mydata" />
  12. <property name="username" value="root" />
  13. <property name="password" value="tian" /> -->
  14. <property name="driver" value="${driver}" /> 
    <!--通过db.properties文件进行配置-->
  15. <property name="url" value="${url}" />
  16. <property name="username" value="${name}" />
  17. <property name="password" value="${password}" />
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <mappers>
  22. <!-- 注册userMapper.xml文件,
  23. userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
  24. <mapper resource="infomap.xml"/>
  25. <mapper class="mybatis.BatisInfo"></mapper>
  26. </mappers>
  27. </configuration>
    db.properties文件
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/mydata
  3. name=root
  4. password=tian

三、通过sql语句对数据库进行操作
(1)数据库表结构: id,name,password
(2)创建一个与表结构对应类
  1. package mybatis
  2. public class Info {
  3. private int id;
  4. private String name;
  5. private String password;
  6. public void setId(int id)
  7. {
  8. this.id=id;
  9. }
  10. public int getId()
  11. {
  12. return id;
  13. }
  14. public void setName(String name)
  15. {
  16. this.name=name;
  17. }
  18. public String getName()
  19. {
  20. return name;
  21. }
  22. public void setPassword(String password)
  23. {
  24. this.password=password;
  25. }
  26. public String getPassword()
  27. {
  28. return password;
  29. }
  30. public String toString()
  31. {
  32. return "name"+name+";password"+password;
  33. }
  34. }

(3)对表进行增删改查配置操作,有两种配置方法:xml和接口类
    1)、xml方式:思想就是给每条sql语句设置一个id,然后一个参数的类型和一个返回值的类型以及一条sql语句
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
  4. 例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
  5. -->
  6. <mapper namespace="me.gacl.mapping.userMapper">
  7. <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,
  8. id属性值必须是唯一的,不能够重复使用parameterType属性指明查询时使用的参数类型,
  9. resultType属性指明查询返回的结果集类型resultType="me.gacl.domain.User"
  10. 就表示将查询结果封装成一个User类的对象返回User类就是users表所对应的实体类-->
  11. <!--根据id查询得到一个user对象-->
  12. <select id="getUser" parameterType="int"
  13. resultType="mybatis.Info">
  14. select * from info where id=#{id}
  15. </select>
  16. <insert id="addUser" parameterType="mybatis.Info">
  17. insert into info (name, password) values (#{name},#{password})
  18. </insert>
  19. <delete id="deleteUser" parameterType="int">
  20. delete from info where id=#{id}
  21. </delete>
  22. <update id="updateInfo" parameterType="mybatis.Info" >
  23. update info set name=#{name},password=#{password} where id=#{id}
  24. </update>
  25. <select id="getAllUsers" resultType="mybatis.Info">
  26. select * from info
  27. </select>
  28. </mapper>
    
        通过xml对表进行增删改查
  1. @Test
  2. public void testAdd()
  3. {
  4. SqlSession sqlSession=BatisSession.getSqlSession(true);
  5. String statement="me.gacl.mapping.userMapper.addUser";  //xml中的namespace+id
  6. Info info=new Info();
  7. info.setName("tian");
  8. info.setPassword("tian");
  9. int result=sqlSession.insert(statement, info); //sql语句+参数,最后一个返回值
  10. sqlSession.close();
  11. System.out.println(result+"sjdjsjd");
  12. }
  13. @Test
  14. public void testDelete()
  15. {
  16. SqlSession sqlSession=BatisSession.getSqlSession(true);
  17. String statement="me.gacl.mapping.userMapper.deleteUser";
  18. int result=sqlSession.delete(statement,2);
  19. sqlSession.close();
  20. System.out.println(result);
  21. }
  22. @Test
  23. public void getAll()
  24. {
  25. SqlSession sqlSession=BatisSession.getSqlSession(true);
  26. String statement="me.gacl.mapping.userMapper.getAllUsers";
  27. List<Info> list=sqlSession.selectList(statement);
  28. sqlSession.close();
  29. System.out.println(list);
  30. }
    
    2)采用接口注视方法:
       接口类:
  1. public interface BatisInfo {
  2. //包括一个sql 语句,一个函数及函数的参数,函数返回值
  3. @Insert("insert into info(name,password) values(#{name},#{password})")
  4. public int add(Info info);
  5. @Delete("delete from info where id=#{id}")
  6. public int delete(int id);
  7. @Select("select * from info where id=#{id}")
  8. public Info getById(int id);
  9. @Select("select * from info")
  10. public List<Info> getAll();
  11. @Update("update info set name=#{name},password=#{password} where id=#{id}")
  12. public int update(Info info);
  13. }
    通过接口类进行操作
  1. @Test
  2. public void testAdd()
  3. {
  4. SqlSession sqlSession=BatisSession.getSqlSession(true);
  5. BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);  //获得接口类
  6. Info info=new Info();
  7. info.setName("annotion");
  8. info.setPassword("annotion");
  9. int result=batisInfo.add(info);//调用函数,传入参数,获得操作结果
  10. sqlSession.close();
  11. System.out.println(result);
  12. }
  13. @Test
  14. public void testDelete()
  15. {
  16. SqlSession sqlSession=BatisSession.getSqlSession(true);
  17. BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);
  18. int result=batisInfo.delete(4);
  19. sqlSession.close();
  20. System.out.println(result);
  21. }
  22. @Test
  23. public void testUpdate()
  24. {
  25. SqlSession sqlSession=BatisSession.getSqlSession(true);
  26. BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);
  27. Info info=new Info();
  28. info.setName("annotiontest");
  29. info.setPassword("annotiontest");
  30. int result=batisInfo.update(info);
  31. sqlSession.close();
  32. System.out.println(result);
  33. }
  34. @Test
  35. public void testGetAll()
  36. {
  37. SqlSession sqlSession=BatisSession.getSqlSession(true);
  38. BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);
  39. List<Info> list=batisInfo.getAll();
  40. sqlSession.close();
  41. System.out.println(list);
  42. }

mybatis配置开发的更多相关文章

  1. 【Java】一次SpringMVC+ Mybatis 配置多数据源经历

    需求 现在在维护的是学校的一款信息服务APP的后台,最近要开发一些新功能,其中一个就是加入学校电影院的在线购票.在线购票实际上已经有一套系统了,但是是外包给别人开发的,我们拿不到代码只能拿到数据库,并 ...

  2. SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分

    SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分 辞职待业青年就是有很多时间来写博客,以前在传统行业技术强度相对不大,不处理大数据,也不弄高并发 ...

  3. 框架篇:Spring+SpringMVC+Mybatis整合开发

    前言: 前面我已搭建过ssh框架(http://www.cnblogs.com/xrog/p/6359706.html),然而mybatis表示不服啊. Mybatis:"我抗议!" ...

  4. Mybatis配置信息浅析 MyBatis简介(二)

    官方文档入门篇中有明确说明 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的. SqlSessionFactory 的实例可以通过 SqlSessionF ...

  5. 【转】一次SpringMVC+ Mybatis 配置多数据源经历

    需求 现在在维护的是学校的一款信息服务APP的后台,最近要开发一些新功能,其中一个就是加入学校电影院的在线购票.在线购票实际上已经有一套系统了,但是是外包给别人开发的,我们拿不到代码只能拿到数据库,并 ...

  6. idea spring-boot gradle mybatis 搭建开发环境

    使用工具idea 2017.2开发,gradle构建项目,使用的技术有spring-boot.mybatis 1.新建项目 说明:1.src为源码路径,开发主要在src下 2.src/main/jav ...

  7. Spring Boot 源码分析 数据源 + Mybatis 配置

    公司今年开始使用 Spring Boot 开发,当然使用 Spring Boot 也是大势所趋,尤其是现在微服务的趋向,当然是选择基于Spring Boot 的 Spring Cloud.(所谓的 S ...

  8. Springboot 和 Mybatis集成开发

    Springboot 和 Mybatis集成开发 本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 jdk:1.7.0_79 maven:3.3.9 额外功能 PageHel ...

  9. SpringBoot整合mybatis——配置mybatis驼峰命名规则自动转换

    一.简述 mybatis驼峰式命名规则自动转换: 使用前提:数据库表设计按照规范“字段名中各单词使用下划线"_"划分”: 使用好处:省去mapper.xml文件中繁琐编写表字段列表 ...

随机推荐

  1. tomcat自动运行磁盘任意位置上的项目、使用Maven对tomcat进行自动部署

     对于非Maven的web项目,有时候我们想不时常通过打war包.拷贝war包.启动tomcat来运行项目.这时候我们可以通过以下方式来进行配置: 1.1:创建web工程.工程结构如下: 1.2. ...

  2. Android Multimedia框架总结(十一)CodeC部分之AwesomePlayer到OMX服务

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52623882 前言:上篇文< ...

  3. 19 Handler 子线程向主线程发送信息

    案例一 Message创建三种方法: package com.example.day19_handler_demo1; import android.os.Bundle; import android ...

  4. 开源IMDG之GridGain

    作为另一款主流的开源数据网格产品,GridGain是Hazelcast的强有力竞争者.同样提供了社区版和商业版,近日GridGain的开源版本已经进入Apache孵化器项目Ignite(一款开源的内存 ...

  5. 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)

    限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事:(1)不同语言字符(英文.中文等)处理方式(2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多 ...

  6. Android优化之ViewPager的懒加载

    转载本博客请注明出处:点击打开链接    http://blog.csdn.net/qq_32059827/article/details/52487794 出于对用户消耗流量的考虑,有必要对view ...

  7. 带你深入理解STL之Vector容器

    C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...

  8. Java在Linux下 不能处理图形的解决办法 Can't connect to X11 window server

    java在图形处理时调用了本地的图形处理库.在利用Java作图形处理(比如:图片缩放,图片签名,生成报表)时,如果运行在windows上不会出问题.如果将程序移植到Linux/Unix上的时候有可能出 ...

  9. 06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制

     Redis高级实用特征 安全性(登录授权和登录后使用auth授权) 设置客户端连接后进行任何其他指定前需要使用的密码. 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户 ...

  10. java根据概率生成数字

    /** * JAVA 返回随机数,并根据概率.比率 * @author zhanglei * */ public class MathRandom { /** * 0出现的概率为%50 */ publ ...