3.使用annotation配置

来源:互联网 发布:阿里云 香港节点 速度 编辑:程序博客网 时间:2024/06/10 23:09

dao接口+annotation配置
这种方式不适合sql语句较复杂的场景,语句过长也不便于代码维护和查看,如果要用到高级映射和动态sql也不好编写

创建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>

configuration.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/test"/>                <property name="username" value="root"/>                <property name="password" value="admin"/>            </dataSource>        </environment>    </environments>    <mappers>        <!-- 映射DeptDao接口所在的包-->       <package name="com.cjq.dao" />    </mappers></configuration>

Dept类型

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;    }}

SessionFactory类

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();    }}

DeptDao类

package com.cjq.dao;import com.cjq.vo.Dept;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import java.util.List;/** * Created by cjq on 2017/9/16. */public interface DeptDao {    @Insert("insert into dept values(#{deptno},#{dname},#{loc})")    public void save(Dept dept);    //value可以是任意名称,因为此方法就一个参数,可以用任意名称代替    @Select("select * from dept where deptno>#{value} order by deptno")    public List<Dept> getAll(int deptno);}

测试

package com.cjq.vo;import com.cjq.dao.DeptDao;import com.cjq.dao.SessionFactory;import org.apache.ibatis.session.SqlSession;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 {        //获取session        SqlSession session= SessionFactory.getSession();        //获得Dao        DeptDao dao=session.getMapper(DeptDao.class);        Dept dept=new Dept();        dept.setDeptno(10);        dept.setDname("test");        dept.setLoc("test");       // dao.save(dept);       // session.commit();        List<Dept> list=dao.getAll(5);        for(Dept d:list){            System.out.println(d);        }        session.close();    }}
原创粉丝点击