ORM:对象关系映射,它只是一种规则。

像MyBatis,Hibernate对jdbc进行了封装。

第一章 回顾JDBC开发
1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高。
2.缺点:代码繁琐(各种try..catch..),难以写出高质量的代码(例如:资源的释放,SQL注入安全性等),开发者既要写业务逻辑,又要写对象(连接对象等)的创建和销毁,必须关注底层具体数据库的语法(例如:分页)(MySQL的分页和Oracle的分页语句不同)。
3.适合于超大批量数据的操作,速度快。

开发步骤:
1.加载数据库的驱动Class.forName().
2.通过DriverManager获取数据库的连接.
3.通过Connection获取Statement或PreparedStatement.
4.将SQL语句绑定到Statement或PreparedStatement中去,准备向数据库发送SQL语句.
5.执行完SQL语句之后,返回对象的结果.
ResultSet set = ps.executeQuery(查询)/int i = ps.executeUpdate(增/删/改),返回影响记录数.
6.依次关闭连接对象ResultSet/Statement/Connection.
如果上述操作需要非查询操作的话,还需要事务的支持,简单的写下代码.
connection.setAutoCommit(false);
connection.commit();
connection.rollback();

第二章 回顾hibernate单表开发
1)优点:不用写SQL,完全以面向对象的方式设计和访问,不用管底层具体数据库的语法,(例如:分页)便于理解。
2)缺点:处理复杂业务时,灵活度差, 复杂的HQL难写难理解,例如多表查询的HQL语句
3)适合于中小批量数据的操作,速度慢。

开发步骤:
1.创建Configuration,加载src/hibernate.cfg.xml配置文件,该配置文件中又去加载xx.hbm.xml文件.
2.通过Configuration创建SessionFactory.
3.通过SessionFactory创建Session.
4.通过Session创建Transaction
5.如果做增删改的话一定要事务,如果做查询的话,事务可选.
6.操作Session的常用API,例如:save()/update()/delete()/get().
7.提交事务,出错后事务回滚.
8.关闭Session.

第三章 什么是MyBatis,MyBatis有什么特点
1.基于上述二种支持,我们需要在中间找到一个平衡点,结合它们的优点,摒弃它们的缺点,这就是MyBatis,现今MyBatis被广泛的企业所采用。
2.MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
3.iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
4.JDBC/DBUtils/Spring DAO,Hibernate/Spring ORM,MyBatis同属于ORM解决方案之一。
第四章 MyBatis快速入门
准备开发环境

1.创建项目MyBatis_Study,普通的java项目或者是JavaWeb项目均可,如下图所示:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUsAAACrCAIAAABg5in/AAATwklEQVR4nO2d3W8b2XmH9z8o0KsiV9u7RQt0sRcFAoFLSf425fWuJdEq6rWplZN1aZK25Xi9FZtQWtsy5Gxsq+bI9MbK1hXEsRxp5HVESO043RQosLnIfhRN07RBv7Bpb4sUCwRo0cS9mJkz7/kYcjgkxeHhj3hg0KOZM+cM55nznjOcl889//zz6XR6+Mgp0C6SB4+PpN/sejUAGD5y6jnP8JOgXSQPpkfSX+16NQAYPnLSNfx3XkoAAPTDNXzk3GMAgH7AcAB0BoYDoDPtNPyv7k4JXLtyo+stBKCf6azhsZU8Vdiq2LZtb08XNndzv9Mrtm3vzBd3dadi2xe2bauW2a2Gp4q1tW43uSdq3qHPpeOGK+EaVtiq2PbTp0+pb6nCk3lLXCgeEW9D9rJXtupUL7O0w+xq1vBUsbbm7YsVQgsMSbOGZ5Z27JUtdjS8CojVThW2KnyxmaUdZ+XKgrivCGeSUAG5zEaHLooncqOcasgH0P00gxs1vUKOXui2N1VzejY2dXzCfC7TK/ba0pMIZY7Iht9Z3rRUrz+9bzUsq0XD6aFhRjVleP2DG7n/pHpTwyMU2NQmqWJtzaplCpvOme0fnIVtuaWZpR3hJAg6LaIa7l0cO9yz0cYKjXL+tGaJLXUuZ/UNZ5tMr9h1egLhUIeu81bFdrdKFZ7MW9vT0qfWuJDgz4Ue/2YRDX995vHGhqj3+oZ14o8bly7bG2Yd7wK8s2b7h97pHtcs27a3L+Q/oFdudiG/NvM92g8zeWiHQ22kXb3QhzvO1On0aICQWdqeL26KBRZrrP5eDb3C2dVqZcup5LUZdYuEj3B6hZ403LmSKtbW+GsfuxwoT+uQZ1LwGcydYa10KeH25TWcb5T7pyWu7W7dluo1ilbYCYvC7L2JOksHP0JR9T+X1MJ2/RA1CEWUft0Qu/H5cqhatmb4dsWzwj3jyRLnIu18SMwloQ8XInAhpq1juNBFBxrOGxjScMVQwt6ZL6pbJJ0f3CWAM9xbwnpUeR16WovHxDuT6HJ/ZXJAyCVGNNzbox8h09L4C5z3Xrk7svChUfNLsGqn8h9wwYvXRq5pjhgL22x98U8Ff30xGuJbytXfqp0iNWejHmVQSftwuVFCUUEHhDZZboLyIhLR8PFLj9e+60u+9t3N8Uuhygpj+Expcaa0qDK8Nr204x7oYm3NtisLxBPHAauW8WwXPg9BcnqWK4NqzvCFbXrCyQSNQrkCgwx3rg5EADfQULVIOizsPGhs+Ih0mSenNXf+Ta9QIcWLSKrwZH7F839hm1xzxShdDFUKWxWbPzX9z45d7OTdcVspJCSN8rfiKuYtcRpFekIWBCnH4cEtJREE34Q6J7bXDYhzSUJRXLFBn4uqCfR8aNXwkXOPi9/yDZ95N2yhdQyffvhDAdnwjPNmZSuztGPb29P8CTS9YgsLlZG2al6qkeH85TbMbA07bxoazvXVfDQut4g7Y8g1O8Bw5YSTX45vOB/+URme8i8aytIuSznwUagoR9QLxHDV7uTQVCxWdaVzB+Rkc/+Ndx2hG4p9PjlKypaKhpNLc30F3BkBchrUMzzoc1E1IfJQXG340QuPV8xNy7L+vGodvRC2rJYN33ScWbNsJqogcGWJisQZzg4uneIO04ez4+t+0tJoJ7WwLcxyOaeLwnCur/YN5yvsd7lCi4J0VRgeMGYTppQaGi4X4jSEDB/EPjxQRYXhLFpRnNBBDakz3OCcWdi2rdq8qo3O/Bwdb0sDFj+MUrVUoSXbe0PPWc8c2XBlE9rch4+ce3zu2qZlWYVrTZTVuuFMM3aAxCDQEu94yd0CuyrLfThzWI7S/fVVhgt7EWI/eVLA7xP4Qf5Tab6Atkg6UYJ7S1uMmX0/SYAnR+neHId/JSJRonjaecFUOMPlKJ0NINVBqbgwVdia94f3xHnVPQU5gvPD72JtzdquBEwN+gF5YEsVUfp8wJSnX0NORXFmhH5MZF/qz0XZhDAjheYMP3L+8dU7m0fON224zExpMazhXPAshq+OUcpZIhpk+jfYrdq81M3WN1zZMQZNxdEC6YWAziDQ5WtLW0InILRIvCzyc+nKSoqGeyoK98P9CMXmpp0DJtW8ybCV7fB9uPCJqGfapN1xh1EIx7hBimI2kevi+P6QjWnpcRYrpmop3TudHqNXc+XJT/sVWkPWELYC3VfQ5yI3oZ1z6ZGJZnh46JhWD+q3KNr0af27QbtP5M6nlUZ19H7e7sCPLNp3P7xT1W3Z8JCjoNaRQ4NoX1FqS4si6Bp5wNYhMks7rX8Zs6lGteWa0qgynT1DhCa08ztt8aRhjNRz6NciGfkG0q4d2A5dlHuxCb1k+G4+L4EWAT3oDcMBANGA4QDojGt4YnAYAKAfMBwAnYHhAOgMDAdAZ+JiuPxNuK/nRrteKwB6nfga3pTkA+m5qm2W0kPi8pxhm3NjSXE5AH1Cmw1///0/OzZ+PMKG4XO8KTeH4QAoabPhTtKIW7cX9x083NSGLRoeBAwHfU5HDLcsa319fab4J+E3DGMvDAegWTpluPMyHz7MTIZyskXDB9JzVdvIJocSg8MDyXyZZrfzDKfLq7MTZEN3YTmHCwHQjc4a7ry+dulyww3bZbijMXM1a9iO4QPJfNkbqA8kJ0qmXc4NDSQnSobnf86wvWsEANrQWcMfPXqUKxTCbNg2w/mwnP13IGc85V+sGx+bNb08GzAc6EanDN/Y2Hjn6tXkUNgNd8FweUDuhOiO6jTOB0AbOmL43buV1CtHm9owmuHsJpkySneicRKl0+hdvByMzZrow4F+tNnw1dXVEyczETaMdrdMNjwxOMwCcts2S7O+w/KkmnMJcIN2w0AfDvQj1t9pa/1+OAB9TlwMBwB0AhgOgM7AcAB0BoYDoDMwHACdgeEA6AwMB0BnYDgAOgPDAdCZuBgu/zjp8a9d63qtAOh14ms4JAegdWJtuJKuVxWAHgKGA6Az8TK89XUAAJSeN1zIweTlYMuXbS73g5C5CYA+obcNl1MvuXld+LyrEBv0LT1ueDJftm2b/NoJy6Pq/hf50kF/09uGO3j9tllKD8FwACi9bfhAeq6Uk1KgU8O5xIz5EsJ10GfEy/AId8uyhjuLZhv5hBSlJ0gCRqRSBX1IzxsOAKhDXAwHAHQCGA6AzsBwAHQGhgOgMzAcAJ157oUXXoDhAOgKDAdAZ2A4ADoDwwHQmbgYLv+K8Ndzo12vFQC9TnwN74Tk8rfWAdCbWBuupJW9wHDQb7TT8Gq1aqleq6urDbdlAq9ef/3GxfG3z7z29pnXblwcX73+OgwHIDLtNHxy6itKwzOTjbVk9r48tGfy7OnFhze/Vb32lbPHXh5SrBMZGA76jTZH6feXlwW9v33/fpgNmb0jf3TpL//ph//9xadf/Pyb/1D7/cnX98vrMLKGm4ONy/Tg5XWRczDSPI3OctgO9KbNhh8bHRcMf3V0LMyGzN7xe6v/8y+X/vfn13/1yfAP7v/um8Uz8jqMsVnTTfyQM6qm6WjsaD+QzJe9/G1CBhg/T2POQFoIoDftn2m7tbjI9L5581bIrZi9L91Ye38z++x7v/mTb//Wl7Pv/HZhWV6HwXKtZg2zlM6Xzbmx5ETJNEvpoYGc8ZR/VWcnpBxPCNqB5rTf8D37D25sbFiWtb6+vmf/wZBbMXtfPHX5964+si9/qXRiz29MPnpx/Ky8DmPA9Zm4nZurOiG6KgcjDAf9RkfulpVm5yzL+kZpNvwm/kzb8J6X/qDw5Ys3Xjx3+6WJXGJor7wOZWzWrJpurO68l0fmicHhrOH/XoKzsrM+onSgNx0xPDm899577yWH94bfJPLdMifRojvHlp6r0tzpXg5GNqPmdtqGQX8mpeufAQCdo7++8QJAvxEXwwEAnQCGA6AzMBwAnYHhAOgMDAdAZ2A4ADoDwwHQGRgOgM7AcAB0RgfDkcURgCD0NBySA+CgreENv9OeNfyHzBLOc2bkaVPnv6MvHy+ZNnvCnD2pkjXIQukZVVYCe+jFyzzhPxWT4HLRTHB7CSgQgAjExfC2ZHFsynD6ALlsoJcoRv0AOcselZCuFMrV2DNt1F7BcDymDjpBXAxvSxbHptahj5oOJPNl2ygbNnnI1CylA92jhrNMUjKi4bmJkulvCMPBLhAXwxPtyOLY1DrUq4GcYRt5P+ublxyqoeH15ZRX455mh+Gg88TI8NazODa7DlM6a3j6sQxQjurCCNnrq8OMwxMBFwKWWCZoHM46eQBaJ0aGJ1rO4tjsOp7SNCY3S+mhhl00jdJZwlaWvJmN55XlsExS6MPBLhAvw1vM4tjsOs7wO+t13Qm3M3c9T4Q0nKRtDlpNzADpxOoGDAcdJ16GJ1rL4hhhnaxhlw2D65ANo8zPsYfsw5WFB8UCzr00GA46TewMbyWLY4Qcb05adZJfOV+2/btf4jichN/yTXIB+X44ddiN1WE46DCxMzwCyOIIQBA6GA4ACAKGA6AzMBwAnYHhAOgMDAdAZ2A4ADoDwwHQGRg+vBzwyp873/W6AdAiMDzQ8Fu3bkNy0OvAcNdweeGBw6mbt25BctDTwPBAw9mr9V104pvn7oNxyOgG6gLDh0+czJw4mWn2T00Bw0G3gOHDv1g/GoZWdgHDQbeA4ZzhlcuHzv7h/l+sH82d2F+5fAiGg14Hhg9Tvcdf2eu8//Bm6vCBvaeP77tROPCdmUMf3kzRTUhqh3xZkVnRTefEkq55hvvLBdtZ8raEl57ZTR2Tm6vatvuQec7gy4ThoDEw3DX8bxZHkkN7nPfW1cOXL059426l/ODdzNJfnP3m/UsX3qCb+FlZc0bVNB3lvBTrflInP8Wqm4/dFVKZFsbdnL9M2F5mSJYHkuSBheGgMTCc9OFvHRp/Zd+HN1NvXXijuLx6+8kHn3x04/8+v/Ts39/4weO3B187xTZhmmUNs5TOl2k6R6+npblTxTxtqqDdVZpL4V7vPQwHYYDh/Dj8rUPpo3tfu/39Mxs/+fxviz/91Pivn73zy5+d+fVPp87M3WObeFlZids5kolZyq8Mw0G3gOHiXPqNwoHU3U8Xv3Pr2efZZ/9x+Zf/PP2fn3z16WbxxPwG3Wps1qyabqzuvJdH5onB4azh/7ICS//mp0wnv7viROns59NgOGgLMFxx0/vw0ieFe09+/Nf5Z/+W+dW/npxdfjCx/KMDiz+i63C/XkJEZX+iM2rsd8uE5I1sw6zBZWX0Z9pgOGgNGC5+L/3C9MWRd7//6vLfnX9g//rHb/6jfX7swd+P3Pts3/WdrlcVgGaB4aLhV65ePZEvHix//Mp7nz24e/3cu2aq8tn+Ox8PHjvV6ZoA0HZguJrBY6f2Xd85cOfjA3c+3nd9B3qDHgWGA6AzMBwAnYHhAOgMDAdAZ2A4ADqjieHIpgiAEs0NRzZF0OdoZbi8ENkUQZ+jueF1sikKXyavj/KJsVAbNrMXANqOzoY7BGVThOGgH9DE8C8q+TBELj+y4QB0F90MTw7t+aKSv/LGaHJoj/PeefNefgKGgz5ET8OPHNz/0ZUpusT5l27CJzwzS7NcnsOEl8uBJWNihsuJFuU8ivJenNXo8+EN0zMC0Dp6Gv7RlSkmeTjDbZLnkOVXoKlabFXqFT8Zk5BHUbEXorr7pxDpGQFoET0NZ5KzKP1eTozSxT7cl9ZNqEhd9VOgqhItJqQsawF74VYIk7wNgBbRx3DH5HcmR+X3ypm2yIYrB+QNDfdWc/ptJ0yA4aDj6GN4s3PpDQynP3XgaEnSmAuJFhNyHkUW7ZMovZTjYvug9IxdP5hAJzQxPOr98EDDE4PDLCC3bbM063fdcqJFRR5FyXBnNbdAZ8wfkJ4RgDaileF1Xt2qmDzB5v8JYTnoPDC8s7C4Xf4TDAe7gCaGxxD3x8aCY28YDnYBGA6AzsBwAHQGhgOgMzAcAJ2B4QDoTIwMD7rRhRxMAESmBwxHNkUAIhM7w+WFyKYIQGR6wPCufy+NsctJ18IklglfpYFkvoyvvvcfcTe8/p/ow5j88nzZtuvowR4CoclbGtJc8sZkq8lbYDhoHR0Mr5omS73k4ORLqm8420TIu6TcRbOKSg+f0rRNYYtqb3I4GN6f6GB4eVbOssA97ylDDR+bNdtveHquKu0dhoPdJ76Gvzo6xpicOj05dZr9l63DnKHGumLkDNucG335eMmU/pT01xcTrfDPftNI2zbnRscD0yoKbRESRST4oF0oij5hKqd/DGoCqTB5yj3n1r+c8xNOkTxTMLzviLXhX1K9lIazNIbcEinvUtbwEyeqkqhOlAzvvVRgom5aRRn52TJlUQnRUlX6R1UT3DKFPHAkmRzJLclWgOF9hy6GOwNyku3Uf+OlcKGnuNjnk1M/IOexQkV5hk/GnRGgSV3qGB6UHE7VBHcddaYaxXsY3p9oYnjC86HEwm9iy9is6SZR88bbnOHMgfRc1fY2981Ra8n23tBz1jNHNlzZBHcdGA7qopHhbr9K0o/TzGqmUTZ9FZV9uGBU/ShdSKsotGUgPVf1VCSOCUW59SH7Uqd/lJugyPQIw4GKuBtueq+Ghif4WXGhP2RjWvZffxzuz3JNlEzvx0wMQ5hUE6bHhLSKMizap/fD6W08tgLdV1D6R6EJMByEJHaGs9fk1OmGfXh4aKfdo2jQBLD79IXhYaa+W0G4xdWJXyDrdBOArsTIcAF6P1ygqXKccLqnEx5q0ATQLeJrOACgdWA4ADoDwwHQGRgOgM78P8vceH8AZx+QAAAAAElFTkSuQmCC" alt="" />

2.添加项目所需的两个主要jar包:mybatis-3.2.8.jar和mysql-connector-java-5.0.8-bin.jar,以及有关的日志包.

aaarticlea/png;base64,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" alt="" />

3.创建MySQL数据库和表.

SQL脚本如下:

创建表的语句不规范!!请自觉忽略。待我补规范语法,这个请自觉忽略

CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE student(
id INT(5) PRIMARY KEY,
NAME VARCHAR(10),
sal DOUBLE(8,2)
)

执行此脚本,完成数据库和表的创建工作。

4.创建与数据库表对应的实体。

package com.winner.entity;

/**
* Created by winner_0715 on 2016/3/23.
* student表对应的实体类
*/
public class Student { private Integer id;//最好使用包装类型
private String name;
private Double sal;//最好使用包装类型

  //无参构造方法必须有
public Student() {
} public Student(Integer id, String name, Double sal) {
this.id = id;
this.name = name;
this.sal = sal;
} 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 Double getSal() {
return sal;
} public void setSal(Double sal) {
this.sal = sal;
}
}

5.在entity目录下创建StudentMapper.xml配置文件,表示表和实体的映射关系,

(位置不一定非得放在实体目录中,命名建议是"实体类名+Mapper.xml"),

相当于Hibernate中的xxx.hbm.xml.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--
为这个mapper指定一个唯一的namespace,
namespace的值习惯上设置成包名+映射文件名,这样就能够保证namespace的值是唯一的.
这里取映射文件的全限定名,不要.xml后缀名。
mapper标签,所以这个唯一的标识也起名为xxxxMapper,纯属为了记忆!
-->
<mapper namespace="com.winner.entity.StudentMapper">
<!--
resultMap标签:映射实体与表
type属性:表示实体全路径名
id属性:为实体与表的映射取一个任意的唯一的名字
Map标签,所以这个唯一的标识也起名为xxxMap,同样是为了记忆!
-->
<resultMap id="studentMap" type="com.winner.entity.Student">
<!--
id标签:映射主键属性
result标签:映射非主键属性
property属性:实体的属性名
column属性:表的字段名
-->
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sal" column="sal"/>
</resultMap>
<!--
insert标签:要书写一个insert的ql语句
id属性:为insert这个sql操作取唯一的名字,可以取Dao中的对应方法名.
parameterType:要执行的dao中的方法的参数,如果是类的话,必须使用全路径类
-->
<insert id="add1">
<![CDATA[
INSERT INTO student(id,name,sal) VALUES (1,"zhangsan",2000);
]]>
</insert> <insert id="add2" parameterType="com.winner.entity.Student">
<![CDATA[
INSERT INTO student(id,name,sal) VALUES (#{id},#{name},#{sal});
]]>
</insert>
  <!--
     这里还可以有其他的sql语句
  -->
</mapper>

6.在src目录下添加Mybatis的配置文件mybatis-config.xml,

相当于Hibernate中的hibernate.cfg.xml,里面有数据库的链接信息。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 加载类路径下的属性文件 -->
<properties resource="db.properties"/> <!-- 设置一个默认的连接环境信息 -->
<environments default="mysql_developer">
<environment id="mysql_developer">
<!-- mybatis使用jdbc事务管理方式 -->
<transactionManager type="JDBC"></transactionManager>
<!-- mybatis使用连接池方式来获取连接 -->
<dataSource type="POOLED">
<!-- 配置与数据库交互的4个必要属性 -->
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
<!-- 连接环境信息,取一个任意唯一的名字 -->
<environment id="oracle_developer">
<!-- mybatis使用jdbc事务管理方式 -->
<transactionManager type="jdbc"/>
<!-- mybatis使用连接池方式来获取连接 -->
<dataSource type="pooled">
<!-- 配置与数据库交互的4个必要属性 -->
<property name="driver" value="${oracle.driver}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</dataSource>
</environment>
</environments> <!-- 加载映射文件-->
<mappers>
<mapper resource="com/winner/entity/StudentMapper.xml"/>
</mappers> </configuration>

db.properties

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://127.0.0.1:3306/mybatis
mysql.username=root
mysql.password=root oracle.driver=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
oracle.username=scott
oracle.password=tiger

7.在util目录下创建MyBatisUtil.java工具类

/**
* Created by winner_0715 on 2016/3/23.
* 工具类
*/
public class MybatisUtil {
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
private static SqlSessionFactory sqlSessionFactory;
/**
* 这个工具类加载时加载mybatis.xml配置文件,注意路径。希望类加载的时候就加载配置文件
*/
static{
try {
Reader reader = Resources.getResourceAsReader("mybatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 禁止外界通过new方法创建
*/
private MybatisUtil(){}
/**
* 获取SqlSession
*/
public static SqlSession getSqlSession(){
//从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
//如果SqlSession对象为空
if(sqlSession == null){
//在SqlSessionFactory非空的情况下,获取SqlSession对象
sqlSession = sqlSessionFactory.openSession();
//将SqlSession对象与当前线程绑定在一起
threadLocal.set(sqlSession);
}
//返回SqlSession对象
return sqlSession;
}
/**
* 关闭SqlSession与当前线程分开
*/
public static void closeSqlSession(){
//从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
//如果SqlSession对象非空
if(sqlSession != null){
//关闭SqlSession对象
sqlSession.close();
//分开当前线程与SqlSession对象的关系,目的是让GC尽早回收
threadLocal.remove();
}
} /**
* 测试
*/
public static void main(String[] args) {
Connection conn = MybatisUtil.getSqlSession().getConnection();
System.out.println(conn!=null?"连接成功":"连接失败");
} }

8.在DAO目录下创建StudentDao.java类,这里就不使用接口了,实际项目中必须使用接口.

就像在Hibernate中使用的那样,DAO调用mybatis提供的有关方法完成对数据库的操作。

public class StudentDao {

    public void add1() throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();
//事务开始(默认)
//读取StudentMapper.xml映射文件中的SQL语句
int i = sqlSession.insert("com.winner.entity.StudentMapper.add1");
System.out.println("本次操作影响了"+i+"行");
//事务提交
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
//事务回滚
sqlSession.rollback();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
} public void add2(Student student) throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();
//事务开始(默认)
//读取StudentMapper.xml映射文件中的SQL语句
sqlSession.insert("com.winner.entity.StudentMapper.add2",student);
//事务提交
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
//事务回滚
sqlSession.rollback();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
} public static void main(String[] args) throws Exception{
StudentDao dao = new StudentDao();
//dao.add1();
dao.add2(new Student(2,"lisi",3000d));
}
}

想看log4j日志信息的话需要log4j的jar包,然后把log4j.properties放在src下

log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

mybatis工作流程
1.通过Reader对象读取src目录下的mybatis.xml配置文件(该文本的位置和名字可任意)
2.通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
3.从当前线程中获取SqlSession对象
4.事务开始,在mybatis中默认
5.通过SqlSession对象读取StudentMapper.xml映射文件中的操作编号,从而读取sql语句
6.事务提交,必写
7.关闭SqlSession对象,并且分开当前线程与SqlSession对象,让GC尽早回收

初识MyBatis的更多相关文章

  1. 初识mybatis(二)

    上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...

  2. mybatis入门--初识mybatis

    初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...

  3. MyBatis For .NET学习- 初识MyBatis

    MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...

  4. 初识Mybatis之工程搭建

    简介:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  5. MyBatis学习01(初识MyBatis和CRUD操作实现)

    1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...

  6. 初识Mybatis框架,实现增删改查等操作(动态拼接和动态修改)

    此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...

  7. 初识Mybatis框架,实现增删改查等操作

    此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...

  8. Mybatis基础学习(一)—初识MyBatis

    一.MyBatis是什么?      MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...

  9. (一)初识mybatis

    Mybatis 是现在很多公司都选择使用的一个ORM(Object Relational Mapping)框架,所以是值得了解和学习一番的. MyBatis 是支持定制化 SQL.存储过程以及高级映射 ...

随机推荐

  1. vs2010创建COM以及调用

    1,创建COM组件 2,调用COM 3,MFC调用COM

  2. linux同步

    1. 内核同步 主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区的保护. 1 .互斥量 头文件 #include<linux/mutex.h> 初始化方法: 静态初 ...

  3. DTCMS会员中心快速更改样式思路

    非常简便 制作一个public.css文件,包含网站头部和底部的样式代码 每个会员中心模版导入这个文件就可以 把原先style.css的头部和底部样式代码删除

  4. IAR:Error [Li005]:no definition for"***" 问题之连接

    对于 IAR 出现的 Error[Li005] 链接错误,网上已经给出了比较详尽的解决方法,而对于这次记录,主要是记录解决问题的思路. 网上给出的方法:http://blog.csdn.net/yue ...

  5. PHPStorm 2016.2 - 2016.3许可证服务器

    最快,最安全的选择,以激活您的PHPStorm 2016.2 - 2016.3,这是足够的激活服务器,软件将自动激活.该过程将不断更新,如果不工作评价写入,如果有,以激活没有列出的服务器也可以说. 通 ...

  6. ios 数字禁止变成电话号码

    1.使用meta来限制页面不转换电话号码   <meta name="format-detection"content="telphone=no"/> ...

  7. 定时备份服务器数据库(借助windows任务计划以及mysqldump)

    最近社区多了,考虑到数据的安全性,要每天备份一次数据库,以防万一: linux目前还不是很了解,先用windows的计划任务吧: 大体思路就是 借用windows的计划任务来执行备份远程数据库到本地: ...

  8. Inside Microsoft SQL Server 2008: T-SQL Querying 读书笔记1

    (5)SELECT   (5-2) DISTINCT    (5-3)TOP(<top_specifications>)   (5-1)<select_list> (1)FRO ...

  9. Delphi摄像头操作

    /*Title:Delphi摄像头操作 *Author:Insun *Blog:http://yxmhero1989.blog.163.com *From:www.4safer.com */ 为了笔耕 ...

  10. Beaglebone Back学习三(开发环境搭建)

    开发环境搭建 1 Ubuntu环境搭建 2 Window环境搭建 3 开发板环境搭建 1 Ubuntu环境搭建 (1)安装必要的网络工具 samba nfs tftp vmware-tools sam ...