mybatis

作者: 天人合一抠脚大汉 | 来源:发表于2018-11-28 20:06 被阅读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);
    
        }
    }
    
    来自:天人合一抠脚大汉

    相关文章

      网友评论

          本文标题:mybatis

          本文链接:https://www.haomeiwen.com/subject/iaizqqtx.html