MyBatis3操作数据库

来源:互联网 发布:店铺怎么开通淘宝客 编辑:程序博客网 时间:2024/06/07 07:10

为什么使用MyBatis框架

为什么要使用MyBatis框架呢?举一个简单例子,在使用传统的JDBC代码时,需要写上必要的DAO层代码,在DAO层代码中将数据表中的数据封装到自定义的实体类中。这给代码的维护带来了问题。但MyBtis和Hibernare解决了这个问题,使用它们做查询时,可以自动地将表中数据记录封装到实体或者Map中,再将它们放入List中返回。这么常见的功能都可以由MyBatis和Hibernate自由方便地实现,可见,使用这两个框架开发应用会非常方便快捷。

准备下载MyBatis框

MyBatis框架下载可以在github上进行下载,下载的地址为:
https://github.com/mybatis/mybatis-3/releases

这里写图片描述

下载完就可以使用它的jar包进行开发了。

创建数据库mytestdb

这里写图片描述

使用XML配置文件创建SqlSessionFactory对象

使用XML配置文件方式创建SqlSessionFactory对象的核心代码如下:

package dbtools;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class GetSqlSession {    public static SqlSession getSqlSession() throws IOException  {        String resource = "mybatis-config.xml";        InputStream inputStream = Resources.getResourceAsStream(resource);        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        SqlSession sqlSession = sqlSessionFactory.openSession();        return sqlSession;    }}

其中mybatis-config.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>  <environments default="development">    <environment id="development">      <transactionManager type="JDBC"/>      <dataSource type="POOLED">        <property name="driver" value="com.mysql.jdbc.Driver"/>        <property name="url" value="jdbc:mysql://localhost:3306/mytestdb"/>        <property name="username" value="root"/>        <property name="password" value="root"/>      </dataSource>    </environment>  </environments></configuration>

使用MyBatis Generator工具逆向

MyBatis Generator插件可以在eclipse,Help–>Install New Software… 上搜索在线安装。
点击src右键新建MyBatis生成文件
这里写图片描述
生成generatorConfig.xml配置文件后,点击打开

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>  <context id="context1">    <jdbcConnection connectionURL="???" driverClass="???" password="???" userId="???" />    <javaModelGenerator targetPackage="???" targetProject="???" />    <sqlMapGenerator targetPackage="???" targetProject="???" />    <javaClientGenerator targetPackage="???" targetProject="???" type="XMLMAPPER" />    <table schema="???" tableName="???">      <columnOverride column="???" property="???" />    </table>  </context></generatorConfiguration>

对生成的generatorConfig.xml配置文件修改为如下

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!--  指定mysql Jar包路径,不然会报错-->  <classPathEntry location="E:/eclipse_workspace/MyBatis/WebContent/WEB-INF/lib/mysql-connector-java-5.1.27.jar" />  <context id="MyBatis">    <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/mytestdb" driverClass="com.mysql.jdbc.Driver" password="root" userId="root" />    <javaModelGenerator targetPackage="orm" targetProject="MyBatis" />    <sqlMapGenerator targetPackage="orm" targetProject="MyBatis" />    <javaClientGenerator targetPackage="orm" targetProject="MyBatis" type="XMLMAPPER" />    <table schema="dbo" tableName="users">    </table>  </context></generatorConfiguration>

准备就绪后,右键点击generatorConfig.xml文件,选择Generate My Batis/i BATIS Artifacts一项,成功生成orm映射文件,此时项目结构为
这里写图片描述

最后编写servlet核心代码

package controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.ibatis.session.SqlSession;import dbtools.GetSqlSession;import orm.Users;@WebServlet("/userinsert")public class UserController extends HttpServlet{    private static final long serialVersionUID = 1L;    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        Users users = new Users();        users.setUsername("starkfang");        users.setPassword("qwerty");        users.setEmail("87500242@qq.com");        SqlSession sqlSession = GetSqlSession.getSqlSession();        sqlSession.insert("orm.UsersMapper.insert", users);        sqlSession.commit();        sqlSession.close();    }}

Servlet中代码实现一个经典的insert数据表的功能,部署web项目,运行Servlet,在数据表中就可以看到成功插入了新纪录,如下图

这里写图片描述

ok!大功告成!!!