摘录自:http://blog.csdn.net/y172158950/article/details/16979391

新的项目中用到mybatis,虽然不用自己写ORM的代码,但是借这个机会,学习一下。

本章目标:如题,helloWorld。

方法:在CSDN上下载一个demo,简单修改,能跑起来就OK。

1. 环境

a)用到的jar:mybatis-3.0.5.jar ,MySQL-connector-java-5.0.8-bin.jar (只有一个jar,是不是很简单)

b)mysql

c)demo下载路径:http://download.csdn.net/detail/lihonghua168/3579586#comment

2.demo代码目录:

a)configuration.xml :mysql连接配置;基本就2块,一个是数据库连接配置,二是映射实体,相关映射文件。
  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. <typeAliases>
  5. <!-- 映射的实体 -->
  6. <typeAlias type="com.test.Goods"/>
  7. </typeAliases>
  8. <environments default="development">
  9. <environment id="development">
  10. <transactionManager type="JDBC"></transactionManager>
  11. <dataSource type="POOLED">
  12. <property name="driver"
  13. value="com.mysql.jdbc.Driver" />
  14. <property name="url"
  15. value="jdbc:mysql://127.0.0.1:3306/test" />
  16. <property name="username" value="root" />
  17. <property name="password" value="root" />
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <mappers>
  22. <!-- 数据连接成功后执行的对应实体映射文件数据库语句 -->
  23. <mapper resource="com/test/Mapper.xml" />
  24. </mappers>
  25. </configuration>
b)Mapper.xml :sql语句配置文件;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="com.test.Mapper">
  4. <select id="selectGood" parameterType="int" resultType="Goods">
  5. select * from test where id =#{id}
  6. </select>
  7. <insert id="insertGood" parameterType="com.test.Goods" useGeneratedKeys="true" keyProperty="id"><!-- 后面两个表示主键自动生成的 -->
  8. insert into test (cateId , name , password , price , description , orderNo , updateTime) values(#{cateId} , #{name} , #{password} , #{price} , #{description} , #{orderNo} , #{updateTime});
  9. </insert>
  10. <delete id="deleteGood" parameterType="int">
  11. delete from test where id=#{id}
  12. </delete>
  13. <update id="updateGood" parameterType="com.test.Goods">
  14. update test set name=#{name},password=#{password},description=#{description},updateTime=#{updateTime} where id=#{id}
  15. </update>
  16. </mapper>
c)Goods.java :结果集与表映射类;和hibernate不同,没有哪里写表与实体的映射关系(存疑)。
  1. package com.test;
  2. import java.util.Date;
  3. /**
  4. * 实体,作为映射时的数据,所以所有字段的名称都必须和数据库里面的一样,不管什么数据库
  5. *
  6. *对应数据库表:
  7. create table test.test (
  8. id bigint(10) primary key AUTO_INCREMENT,
  9. cateId varchar(100),
  10. name varchar(100),
  11. password varchar(100),
  12. price double,
  13. description varchar(100),
  14. orderNo int,
  15. updateTime datetime
  16. );
  17. */
  18. public class Goods {
  19. private long id;
  20. private String cateId;
  21. private String name;
  22. private String password;
  23. private double price;
  24. private String description;
  25. private int orderNo;
  26. private Date updateTime;
  27. public String getCateId() {
  28. return cateId;
  29. }
  30. public long getId() {
  31. return id;
  32. }
  33. public void setId(long id) {
  34. this.id = id;
  35. }
  36. public void setCateId(String cateId) {
  37. this.cateId = cateId;
  38. }
  39. public String getName() {
  40. return name;
  41. }
  42. public void setName(String name) {
  43. this.name = name;
  44. }
  45. public double getPrice() {
  46. return price;
  47. }
  48. public void setPrice(double price) {
  49. this.price = price;
  50. }
  51. public String getDescription() {
  52. return description;
  53. }
  54. public void setDescription(String description) {
  55. this.description = description;
  56. }
  57. public int getOrderNo() {
  58. return orderNo;
  59. }
  60. public void setOrderNo(int orderNo) {
  61. this.orderNo = orderNo;
  62. }
  63. public Date getUpdateTime() {
  64. return updateTime;
  65. }
  66. public void setUpdateTime(Date updateTime) {
  67. this.updateTime = updateTime;
  68. }
  69. public String getPassword() {
  70. return password;
  71. }
  72. public void setPassword(String password) {
  73. this.password = password;
  74. }
  75. }
d)Test1.java :dao类,测试类
  1. package com.test;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import java.util.Date;
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  9. public class Test1{
  10. public static void main(String args[]) throws IOException {
  11. String resource = "com/test/configuration.xml";//获得xml(Mybatis)数据库连接的连接
  12. Reader reader = Resources.getResourceAsReader(resource);//读取里面的文件
  13. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
  14. .build(reader);//创建session工厂
  15. SqlSession session = sessionFactory.openSession();//打开session
  16. new Test1().insert(session);
  17. }
  18. /**
  19. * 修改
  20. * @param session
  21. */
  22. public void update(SqlSession session){
  23. int falg=0;
  24. Goods g=new Goods();
  25. g.setId(1);
  26. g.setCateId("2");
  27. g.setName("huage");
  28. g.setPassword("huage");
  29. g.setDescription("He is me");
  30. g.setUpdateTime(new Date());
  31. falg=session.update("com.test.Mapper.updateGood", g);
  32. session.commit();
  33. if(falg==1){
  34. System.out.println("Data update successfully!");
  35. }else{
  36. System.out.println("Data update fail..");
  37. }
  38. session.close();
  39. }
  40. /**
  41. * 删除
  42. * @param session
  43. */
  44. public void delete(SqlSession session){
  45. //session.delete("1");
  46. int falg=0;
  47. falg=session.delete("com.test.Mapper.deleteGood", 1);
  48. session.commit();
  49. if(falg==1){
  50. System.out.println("Data delete successfully!");
  51. }else{
  52. System.out.println("Data dalete fail..");
  53. }
  54. session.close();
  55. }
  56. /**
  57. * 插入数据
  58. * @param session
  59. */
  60. public void insert(SqlSession session){
  61. Goods g=new Goods();
  62. g.setCateId("2");
  63. g.setName("huage");
  64. g.setPassword("huage");
  65. g.setPrice(5);
  66. g.setDescription("He is me");
  67. g.setOrderNo(2);
  68. g.setUpdateTime(new Date());
  69. int flag=0;
  70. flag=session.insert("com.test.Mapper.insertGood",g);
  71. session.commit();//一定要提交才能插入数据
  72. if(flag==1){
  73. System.out.println("Data inserted successfully!");
  74. }else{
  75. System.out.println("Data inserted fails!");
  76. }
  77. session.close();
  78. }
  79. /**
  80. * 查询
  81. * @param session
  82. */
  83. public void select(SqlSession session){
  84. try {
  85. Goods goods = (Goods) session.selectOne("com.test.Mapper.selectGood", 1);//执行数据操作
  86. System.out.println("good name is : " + goods.getName());
  87. System.out.println("description :="+goods.getDescription());
  88. System.out.println("orderNo :="+goods.getOrderNo());
  89. System.out.println("price :="+goods.getPrice());
  90. System.out.println("updateTiem :="+goods.getUpdateTime());
  91. System.out.println("id :="+goods.getId());
  92. System.out.println("password :="+goods.getPassword());
  93. System.out.println("cateid :="+goods.getCateId());
  94. } catch (Exception e) {
  95. e.printStackTrace();
  96. } finally {
  97. session.close();
  98. }
  99. }
  100. }
e)Test1.java流程分析

i. 通过Reader类读取configuration.xml类容,获取数据库连接配置及相关实体类、sql语句配置信息。

ii. 依据Reader的信息创建SqlSessionFactory。(这2步在实际工程中调用一次即可)

iii. 创建SqlSession,相当于JDBC的Connection

iv. insert数据:封装了sql语句,封装了映射过程(update,remove,select过程类似)

1)封装Goods实体。

2)调用session.insert方法:2个参数,"com.test.Mapper.insertGood“,去Mapper.xml找下,insert语句已经写好了;g,实体

3)commit,close连接。

f)数据库结果

 
 

mybatis_helloword(1)的更多相关文章

随机推荐

  1. npm 项目更换目录后无法启动

    问题描述: 使用 Vue-cli 创建的项目,当文件移动到其他目录后,无法正常启动,报错信息如下: 分析原因: npm 项目,在安装依赖(node_modules)的时候,会记录当前的文件路径.当路径 ...

  2. Nginx集群之SSL证书的WebApi微服务

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi微服务... 1 3       HTTP与HTTPS(SSL协议)... 1 4       Ope ...

  3. 在eclipse上安装Scala插件

    1.官网下载地址 http://scala-ide.org/download/current.html 目前最新的版本 http://download.scala-ide.org/sdk/lithiu ...

  4. ppt的那些小事(一)

    根据应用场景不同,幻灯片可以分为两大类,演讲型和阅读型 模板资源:(免费) OfficePLUS,微软Office官方在线模板网站!http://www.officeplus.cn/Template/ ...

  5. COM学习(三)——COM的跨语言

    COM是基于二进制的组件模块,从设计之初就以支持所有语言作为它的一个目标,这篇文章主要探讨COM的跨语言部分. idl文件 一般COM接口的实现肯定是以某一具体语言来实现的,比如说使用VC++语言,这 ...

  6. [转载]解决sudo: sorry, you must have a tty to run sudo

    前几天遇到一个问题,在一个终端中调用另一个shell,始终是无法执行的,后来捕捉到报错信息为sudo: sorry, you must have a tty to run sudo,后来,在网上了解到 ...

  7. 多个tab选项卡

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 常用原生JS函数和语法集合

    luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...

  9. 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性

    "/"应用程序中的服务器错误.使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. ...

  10. 【批处理学习笔记】第十一课:常用DOS命令(1)

    [ 文件夹管理 ]cd 显示当前目录名或改变当前目录.md 创建目录.rd 删除一个目录.dir 显示目录中的文件和子目录列表.tree 以图形显示驱动器或路径的文件夹结构.path 为可执行文件显示 ...