1.Mybatis HelloWorld工程

来源:互联网 发布:mac pro win10性能 编辑:程序博客网 时间:2024/05/21 10:29

1.mybatis介绍
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。支持自定义SQL映射,支持存储过程及一些高级映射;它支持两种配置方式,分别是Annotation(注解),XML。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

2.搭建maven工程

输入图片说明

创建maven工程

输入图片说明

输入图片说明

输入图片说明

输入图片说明

补充目录结构

输入图片说明

输入图片说明

引入相关依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.cjq</groupId>  <artifactId>cjq-mybatis1</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>jar</packaging>  <name>cjq-mybatis1</name>  <url>http://maven.apache.org</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.12</version>      <scope>test</scope>    </dependency>    <!--MyBatis相关-->    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis</artifactId>      <version>3.2.8</version>    </dependency>    <!--数据库相关-->    <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>      <version>5.1.35</version>    </dependency>  </dependencies></project>

创建核心配置文件(主要是数据源)
输入图片说明

<?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/test"/>                <property name="username" value="root"/>                <property name="password" value="admin"/>            </dataSource>        </environment>    </environments>    <mappers>        <!--        <mapper resource="com/cjq/vo/DeptMapper.xml"/>        -->    </mappers></configuration>

输入图片说明

输入图片说明

创建vo

输入图片说明

package com.cjq.vo;/** * Created by cjq on 2017/9/16. */public class Dept {    Integer deptno;    String  dname;    String  loc;    @Override    public String toString() {        return "Dept{" +                "deptno=" + deptno +                ", dname='" + dname + '\'' +                ", loc='" + loc + '\'' +                '}';    }    public Integer getDeptno() {        return deptno;    }    public void setDeptno(Integer deptno) {        this.deptno = deptno;    }    public String getDname() {        return dname;    }    public void setDname(String dname) {        this.dname = dname;    }    public String getLoc() {        return loc;    }    public void setLoc(String loc) {        this.loc = loc;    }}

创建映射文件(映射的是SQL语句)

输入图片说明

<?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="dept">     <!-- namespace的值可以自定义-->     <!--id标识,resultType是返回值类型,parameterType方法传入的参数类型 -->     <!--查询所有-->      <select id="getAll"  resultType="com.cjq.vo.Dept">           select * from dept             </select>    <!--根据id删除-->      <delete id="delete" parameterType="int">        delete from dept where deptno=#{deptno}      </delete>    <!--新增-->      <insert id="save" parameterType="com.cjq.vo.Dept">        insert into dept values(#{deptno},#{dname},#{loc})       </insert>    <!--根据id查询-->      <select id="getDept"  parameterType="int" resultType="com.cjq.vo.Dept">           select * from dept where deptno=#{value}      </select></mapper>

在核心配置文件中引入映射文件

<?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/test"/>                <property name="username" value="root"/>                <property name="password" value="admin"/>            </dataSource>        </environment>    </environments>    <mappers>        <mapper resource="mapper/DeptMapper.xml"/>    </mappers></configuration>

测试

输入图片说明

package com.cjq.vo;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;import java.util.List;/** * Created by cjq on 2017/9/16. */public class DeptTest {    public static void main(String[] args) throws IOException {        //测试查询        String resource="configuration.xml";        //获取资源的流        InputStream r= Resources.getResourceAsStream(resource);        //获得session工厂        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(r);        //获得Session 会话  应用程序--mybatis之间的会话--->操作mybatis        SqlSession sqlSession=factory.openSession();        //dept相当于映射文件中的namespace,getAll对应id        List<Dept> list=sqlSession.selectList("dept.getAll");        for(Dept d:list){            System.out.println(d);        }        sqlSession.close();    }}

3.封装获取SqlSession的方法,编写dao层

输入图片说明

package com.cjq.dao;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;/** * Created by cjq on 2017/9/16. */public class SessionFactory {    static SqlSessionFactory factory=null;    static{        //测试查询        String resource="configuration.xml";        //获取资源的流        InputStream r= null;        try {            r = Resources.getResourceAsStream(resource);        } catch (IOException e) {            e.printStackTrace();        }        //获得session工厂         factory=new SqlSessionFactoryBuilder().build(r);    }    public static SqlSession getSession(){        //openSession默认事物是手动提交的         return factory.openSession();    }}

这里写图片描述

package com.cjq.dao;import com.cjq.vo.Dept;import org.apache.ibatis.session.SqlSession;import java.util.List;/** * Created by cjq on 2017/9/16. */public class DeptDao {    SqlSession sqlSession= SessionFactory.getSession();    public List<Dept> getAll(){       List<Dept> list= sqlSession.selectList("dept.getAll");        return list;    }    public void save(Dept dept){        sqlSession.insert("save",dept);        sqlSession.commit();    }}

修改测试类

package com.cjq.vo;import com.cjq.dao.DeptDao;import java.io.IOException;import java.util.List;/** * Created by cjq on 2017/9/16. */public class DeptTest {    public static void main(String[] args) throws IOException {       DeptDao dao=new DeptDao();       List<Dept> list=dao.getAll();        for(Dept d:list){            System.out.println(d);        }        Dept dept=new Dept();        dept.setDeptno(9);        dept.setDname("test");        dept.setLoc("test");        dao.save(dept);    }}
原创粉丝点击