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);
}
}
网友评论