mybatis

2018-11-28  本文已影响0人  天人合一抠脚大汉

Project_location:C:\Users\Administrator\IdeaProjects

.idea--包自动
config--资源包
lib --jar包
out --输出
src --源代码


image.png

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis
jdbc.username=root
jdbc.password=root

log4j.properties

# Global logging configuration
#在开发环境日志级别要设置为DEBUG、生产环境要设置为INFO或者ERROR
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

xml文件--SqlMapConfig.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"></properties>
    <typeAliases>
        <package name="com.kjh.domain"></package>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="com.kjh.mapper"></package>
    </mappers>
</configuration>

src下建立--com.kjh包下
domain包写入成员类
eg. --Dept.class 自动生成成员get,set方法
快捷键:Alt+Insert或直接Ctrl+o

package com.kjdh.domain;

public class Dept {
    private int deptno;
    private String dname;
    private String loc;


    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }

    public int getDeptno() {
        return deptno;
    }

    public void setDeptno(int 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;
    }
}

Emp下成员


import java.math.BigDecimal;
import java.util.Date;

public class Emp {
    private Integer empno;

    private String ename;

    private String job;

    private Integer mgr;

    private Date hiredate;

    private BigDecimal sal;

    private BigDecimal comm;

    private Integer deptno;

mapper包是一个执行包,属于底层劳动力,用来写接口interface和实现.xml接口与实现名字要一致
分别写DeptMapper与DeptMapper.xml ;
EmpMapper与EmpMapper.xml
DeptMapper接口

package com.kjdh.mapper;

import com.kjdh.domain.Dept;
import java.util.List;
import java.util.Map;

public interface DeptMapper {
    public Dept getDeptByID(int id) ;
    public List<Dept> getAllDepts();
    public int deleteDeptByID(int id);
    public int addDept(Dept dept);
    public int updateDept(Dept dept);
    public List<Dept> getDeptsList(Dept dept);
    public int getDeptRecorCount();
    public List<Dept>getDeptsListMap(Map<String,Object> params);
    public List<Map<String,Object>> getEmpDeptInfo();
}

DeptMapper.xml

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kjdh.mapper.DeptMapper">

    <sql id="query">
        <set>
            <if test="dname !=null ">
                dname = #{dname},
            </if>
            <if test="loc !=null and loc!=''">
                loc=#{loc},
            </if>
        </set>
    </sql>

    <select id="getDeptByID" parameterType="int" resultType="Dept">
        select  * from dept where deptno = #{value}
    </select>
    <select id="getAllDepts" resultType="Dept">
        select * from dept
    </select>
    <delete id="deleteDeptByID" parameterType="int">
        delete from dept where deptno = #{value }
    </delete>
    <insert id="addDept" parameterType="Dept">
        <selectKey keyProperty="deptno" order="AFTER" resultType="int">
            select Last_insert_id()
        </selectKey>
        insert into dept(dname,loc) values(#{dname},#{loc})
    </insert>
    <update id="updateDept" parameterType="com.kjdh.domain.Dept">
        update  dept
        <include refid="query"></include>
         where deptno=#{deptno}
    </update>
    <select id="getDeptsList" parameterType="Dept" resultType="Dept">
    select * from dept
    <where>
        <if test="loc !=null and loc !=''">
            loc= #{loc}
        </if>
        <if test="dname !=null ">
            and dname like '%${dname}%'
        </if>
    </where>

</select>
    <select id="getDeptRecorCount" resultType="int">
        select count(*) from dept
    </select>
    <select id="getDeptsListMap" parameterType="Dept" resultType="Dept">
        select * from dept where loc= #{loc} and dname = #{deptname}

    </select>
    <select id="getEmpDeptInfo" resultType="map">
      select emp.ename,emp.ename,emp.sal,dept.dname,dept.loc from emp
      join dept on dept.deptno=emp.deptno
    </select>

</mapper>

EmpMapper

package com.kjdh.mapper;

import com.kjdh.domain.Emp;

public interface EmpMapper {
    int deleteByPrimaryKey(Integer empno);

    int insert(Emp record);

    int insertSelective(Emp record);

    Emp selectByPrimaryKey(Integer empno);

    int updateByPrimaryKeySelective(Emp record);

    int updateByPrimaryKey(Emp record);
}

EmpMapper.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="com.kjdh.mapper.EmpMapper" >
  <resultMap id="BaseResultMap" type="com.kjdh.domain.Emp" >
    <id column="empno" property="empno" jdbcType="INTEGER" />
    <result column="ename" property="ename" jdbcType="VARCHAR" />
    <result column="job" property="job" jdbcType="VARCHAR" />
    <result column="mgr" property="mgr" jdbcType="INTEGER" />
    <result column="hiredate" property="hiredate" jdbcType="DATE" />
    <result column="sal" property="sal" jdbcType="DECIMAL" />
    <result column="comm" property="comm" jdbcType="DECIMAL" />
    <result column="deptno" property="deptno" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    empno, ename, job, mgr, hiredate, sal, comm, deptno
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from emp
    where empno = #{empno,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from emp
    where empno = #{empno,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.kjdh.domain.Emp" >
    insert into emp (empno, ename, job, 
      mgr, hiredate, sal, comm, 
      deptno)
    values (#{empno,jdbcType=INTEGER}, #{ename,jdbcType=VARCHAR}, #{job,jdbcType=VARCHAR}, 
      #{mgr,jdbcType=INTEGER}, #{hiredate,jdbcType=DATE}, #{sal,jdbcType=DECIMAL}, #{comm,jdbcType=DECIMAL}, 
      #{deptno,jdbcType=INTEGER})
  </insert>
  <insert id="insertSelective" parameterType="com.kjdh.domain.Emp" >
    insert into emp
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="empno != null" >
        empno,
      </if>
      <if test="ename != null" >
        ename,
      </if>
      <if test="job != null" >
        job,
      </if>
      <if test="mgr != null" >
        mgr,
      </if>
      <if test="hiredate != null" >
        hiredate,
      </if>
      <if test="sal != null" >
        sal,
      </if>
      <if test="comm != null" >
        comm,
      </if>
      <if test="deptno != null" >
        deptno,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="empno != null" >
        #{empno,jdbcType=INTEGER},
      </if>
      <if test="ename != null" >
        #{ename,jdbcType=VARCHAR},
      </if>
      <if test="job != null" >
        #{job,jdbcType=VARCHAR},
      </if>
      <if test="mgr != null" >
        #{mgr,jdbcType=INTEGER},
      </if>
      <if test="hiredate != null" >
        #{hiredate,jdbcType=DATE},
      </if>
      <if test="sal != null" >
        #{sal,jdbcType=DECIMAL},
      </if>
      <if test="comm != null" >
        #{comm,jdbcType=DECIMAL},
      </if>
      <if test="deptno != null" >
        #{deptno,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.kjdh.domain.Emp" >
    update emp
    <set >
      <if test="ename != null" >
        ename = #{ename,jdbcType=VARCHAR},
      </if>
      <if test="job != null" >
        job = #{job,jdbcType=VARCHAR},
      </if>
      <if test="mgr != null" >
        mgr = #{mgr,jdbcType=INTEGER},
      </if>
      <if test="hiredate != null" >
        hiredate = #{hiredate,jdbcType=DATE},
      </if>
      <if test="sal != null" >
        sal = #{sal,jdbcType=DECIMAL},
      </if>
      <if test="comm != null" >
        comm = #{comm,jdbcType=DECIMAL},
      </if>
      <if test="deptno != null" >
        deptno = #{deptno,jdbcType=INTEGER},
      </if>
    </set>
    where empno = #{empno,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.kjdh.domain.Emp" >
    update emp
    set ename = #{ename,jdbcType=VARCHAR},
      job = #{job,jdbcType=VARCHAR},
      mgr = #{mgr,jdbcType=INTEGER},
      hiredate = #{hiredate,jdbcType=DATE},
      sal = #{sal,jdbcType=DECIMAL},
      comm = #{comm,jdbcType=DECIMAL},
      deptno = #{deptno,jdbcType=INTEGER}
    where empno = #{empno,jdbcType=INTEGER}
  </update>
</mapper>

用测试类跑一跑

package com.kjdh.mapper;

import com.kjdh.domain.Dept;
import com.kjdh.domain.Emp;
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 org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestMybatis {
    DeptMapper deptMapper =null;
    SqlSession sqlSession =null;
    EmpMapper empMapper=null;
    @Before
    public void CreateSission() throws IOException {
        // write your code here
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        sqlSession = sqlSessionFactory.openSession();
        //获得mapper接口对象
        deptMapper = sqlSession.getMapper(DeptMapper.class);
        empMapper=sqlSession.getMapper(EmpMapper.class);
    }

    @Test
    public void testgetDeptByID() throws IOException {

        Dept dept = deptMapper.getDeptByID(10);
        System.out.println(dept);
    }
    @Test
    public  void testDleteDeptByID(){
        int result = deptMapper.deleteDeptByID(40);
        sqlSession.commit();
        System.out.println(result);
    }
    @Test
    public  void testAddDeptByID(){

        Dept dept =new Dept();
        dept.setDname("xiaoshou");
        dept.setLoc("shenyang");
        int result = deptMapper.addDept(dept);
        sqlSession.commit();
        System.out.println(result);
        System.out.println(dept.getDeptno());
    }
    @Test
    public  void testUpdateDeptByID(){

        Dept dept =new Dept();
        dept.setDname("6667");
        dept.setLoc("sssdd");
        dept.setDeptno(44);
        int result = deptMapper.updateDept(dept);
        sqlSession.commit();
        System.out.println(result);

    }
    @Test
    public void testGetDeptList() {
        Dept dept= new Dept();
        dept.setLoc("shenyang");
        dept.setDname("销售");
        List<Dept> deptList = deptMapper.getDeptsList(dept);
        System.out.println(deptList);
    }
    @Test
    public void testGetDeptCount() {
        int count = deptMapper.getDeptRecorCount();
        System.out.println(count);
    }
    @Test
    public  void testGetDeptListMap(){

        Map<String,Object> params=new HashMap<>();
        params.put("loc","shenyang");
        params.put("deptname","销售部");
        List<Dept> deptList=deptMapper.getDeptsListMap(params);
        System.out.println(params);
    }
    @Test
    public void getEmpDeptInfo(){
        List<Map<String, Object>> empDeptInfo = deptMapper.getEmpDeptInfo();
        for (Map<String,Object>mapRow:empDeptInfo){
            for(String key : mapRow.keySet())
            {
                System.out.println(key + ":" + mapRow.get(key));
            }
//           for(Map.Entry<String,Object> entry:mapRow.entrySet()){
//               System.out.println(entry);
//           }
            System.out.println("--------------");
        }
        System.out.println(empDeptInfo);
    }
    @Test
    public void testSelectByPrimaryKey(){
        Emp emp = empMapper.selectByPrimaryKey(7369);
        System.out.println(emp.getEname());
    }
}

Main

package com.kjdh;


import com.kjdh.domain.Dept;
import com.kjdh.mapper.DeptMapper;
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;

public class Main {

    public static void main(String[] args) throws IOException {
    // write your code here
        String resource = "SqlMapConfig.xml";
        InputStream inputStream=Resources.getResourceAsStream(resource);
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
       //获得mapper接口对象
        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
       // Dept dept = deptMapper.getDeptByID(10);
        List<Dept> deptList=deptMapper.getAllDepts();
        System.out.println(deptList);

    }
}
来自:天人合一抠脚大汉
上一篇下一篇

猜你喜欢

热点阅读