mybatis code

main
lsrong 11 months ago
parent eea028511d
commit 4f966432a6

@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<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.msb.springmvc</groupId>
<artifactId>mybaits_02</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--mysqlConnector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--mybatis 核心jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!--lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<!--日志的依赖 log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,16 @@
package com.msb.mapper;
import com.msb.pojo.Dept;
import org.apache.ibatis.annotations.Param;
public interface DeptMapper {
/**
* id
* @param dept
* @return
*/
int addDept(@Param("dept") Dept dept);
Dept findDeptJoinEmpByDeptno(@Param("deptno")int deptno);
}

@ -0,0 +1,95 @@
package com.msb.mapper;
import com.msb.pojo.Emp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface EmpMapper {
/**
*
* @return
*/
List<Emp>findAll();
/**
*
*/
Emp findEmpByNo(int empno);
/**
*
*/
List<Emp> findEmpByEmpnoAndSal(@Param("deptno") int deptno, @Param("sal") double sal);
/**
*
* 使 Emp
* @param emp
* @return
*/
List<Emp> findEmpByEmpnoAndSal2(@Param("emp") Emp emp);
/**
*
* @param ename
* @return
*/
List<Emp> findByName(@Param("ename")String ename);
/**
*
* @param emp
* @return
*/
int addEmp(@Param("emp")Emp emp);
/**
*
* @param empno
* @param ename
* @return
*/
int updateNameByNo(@Param("empno")int empno, @Param("ename")String ename);
/**
*
* @param empno
* @return
*/
int deleteByEmpno(@Param("empno")int empno);
/**
*
* @param emp
* @return
*/
List<Emp> findByCondition(@Param("emp") Emp emp);
/**
*
* @param emp
* @return
*/
int updateEmpByCondition(@Param("emp")Emp emp);
/**
*
* @param empnos
* @return
*/
List<Emp> findByEmpnosArr(int[] empnos);
/**
*
* @param empnos
* @return
*/
List<Emp> findByEmpnosList(List<Integer> empnos);
Emp findEmpJoinDeptByEmpno(@Param("empno") int empno);
}

@ -0,0 +1,8 @@
package com.msb.mapper;
import com.msb.pojo.Project;
import org.apache.ibatis.annotations.Param;
public interface ProjectMapper {
Project findProjectJoinEmpsByPid(@Param("pid") int pid);
}

@ -0,0 +1,19 @@
package com.msb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer deptno;
private String dname;
private String loc;
// 一对多的关系,部门的所有员工信息查到下面的属性
private List<Emp> empList;
}

@ -0,0 +1,26 @@
package com.msb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comn;
private Integer deptno;
// 一对一的关系,部门信息填充到该属性下
private Dept dept;
}

@ -0,0 +1,18 @@
package com.msb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Project {
private Integer pid;
private String pname;
private Integer money;
private List<ProjectRecord> projectRecordList;
}

@ -0,0 +1,15 @@
package com.msb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProjectRecord {
private Integer empno;
private Integer pid;
private Emp emp;
}

@ -0,0 +1,35 @@
<?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.msb.mapper.DeptMapper">
<!--
useGeneratedKeys: 返回自增的主键
keyProperty: 自定填充到实体对象中去
-->
<insert id="addDept" useGeneratedKeys="true" keyProperty="deptno">
insert into dept values(DEFAULT, #{dept.dname}, #{dept.loc});
</insert>
<!-- 一对多的关系 resultMap -->
<resultMap id="deptInfo" type="dept">
<id column="deptno" property="deptno" />
<result column="dname" property="dname" />
<result column="loc" property="loc" />
<collection property="empList" ofType="emp">
<id column="empno" property="empno"/>
<result column="ename" property="ename"/>
<result column="job" property="job"/>
<result column="mgr" property="mgr"/>
<result column="hiredate" property="hiredate"/>
<result column="sal" property="sal"/>
<result column="comn" property="comn"/>
<result column="deptno" property="deptno"/>
</collection>
</resultMap>
<select id="findDeptJoinEmpByDeptno" resultMap="deptInfo">
select * from dept d
left join emp e on d.deptno=e.deptno
where d.deptno = #{deptno}
</select>
</mapper>

@ -0,0 +1,135 @@
<?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.msb.mapper.EmpMapper">
<sql id="empColumn">empno,ename,job,mgr,hiredate,sal,comm,deptno</sql>
<sql id="empFrom">select <include refid="empColumn"/> from emp</sql>
<select id="findAll" resultType="emp">
<include refid="empFrom" />
</select>
<select id="findEmpByNo" resultType="emp" parameterType="int">
<include refid="empFrom" /> where empno = #{empno}
</select>
<select id="findEmpByEmpnoAndSal" resultType="emp">
<include refid="empFrom" /> where deptno = #{deptno} and sal >= #{sal}
</select>
<select id="findEmpByEmpnoAndSal2" resultType="emp" parameterType="emp">
<include refid="empFrom" /> where deptno = #{emp.deptno} and sal >= #{emp.sal}
</select>
<!-- 模糊查找-->
<select id="findByName" resultType="emp">
<include refid="empFrom" /> where ename like concat('%', #{ename}, '%');
</select>
<insert id="addEmp" useGeneratedKeys="true" keyProperty="empno">
insert into emp values
(DEFAULT, #{emp.ename}, #{emp.job}, #{emp.mgr}, #{emp.hiredate}, #{emp.sal},#{emp.comn},#{emp.deptno})
</insert>
<update id="updateNameByNo">
update emp set ename=#{ename} where empno=#{empno};
</update>
<delete id="deleteByEmpno">
delete from emp where empno = #{empno}
</delete>
<select id="findByCondition" resultType="emp">
<include refid="empFrom" />
<where>
<if test="emp.empno != null">
and empno = #{emp.empno}
</if>
<if test="emp.ename != null and emp.ename != ''">
<bind name="likePattern" value="'%'+emp.ename+'%'"/>
and ename like #{likePattern}
</if>
<if test="emp.job != null and emp.job != ''">
and job = #{emp.job}
</if>
<if test="emp.mgr != null">
and mgr = #{emp.mgr}
</if>
<if test="emp.hiredate != null">
and hiredate = #{emp.hiredate}
</if>
<if test="emp.sal != null">
and sal = #{emp.sal}
</if>
<if test="emp.deptno != null">
and deptno = #{emp.deptno}
</if>
</where>
</select>
<update id="updateEmpByCondition">
update emp
<set>
<if test="emp.ename != null and emp.ename != ''">
,ename = #{emp.ename}
</if>
<if test="emp.job != null">
,job=#{emp.job}
</if>
<if test="emp.mgr != null">
,mgr=#{emp.mgr}
</if>
<if test="emp.hiredate != null">
,hiredate=#{emp.hiredate}
</if>
<if test="emp.sal != null">
,sal=#{emp.sal}
</if>
<if test="emp.comn != null">
,comn=#{emp.comn}
</if>
<if test="emp.deptno != null">
,deptno=#{emp.deptno}
</if>
</set>
where empno = #{emp.empno}
</update>
<select id="findByEmpnosArr" resultType="emp">
<include refid="empFrom"/> where empno in
<foreach collection="array" separator="," open="(" close=")" item="empno">
#{empno}
</foreach>
</select>
<select id="findByEmpnosList" resultType="emp">
<include refid="empFrom"/> where empno in
<foreach collection="list" separator="," open="(" close=")" item="empno">
#{empno}
</foreach>
</select>
<!-- resultMap: 将字段映射到约定的属性上-->
<resultMap id="empInfo" type="emp">
<id column="empno" property="empno"/>
<result column="ename" property="ename"/>
<result column="job" property="job"/>
<result column="mgr" property="mgr"/>
<result column="hiredate" property="hiredate"/>
<result column="sal" property="sal"/>
<result column="comn" property="comn"/>
<result column="deptno" property="deptno"/>
<association property="dept" javaType="dept" >
<id column="deptno" property="deptno" />
<result column="dname" property="dname"/>
<result column="loc" property="loc"/>
</association>
</resultMap>
<select id="findEmpJoinDeptByEmpno" resultMap="empInfo">
select * from emp
left join dept d on emp.deptno = d.deptno
where emp.empno = #{empno}
</select>
</mapper>

@ -0,0 +1,33 @@
<?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.msb.mapper.ProjectMapper">
<resultMap id="projectInfo" type="project">
<id column="pid" property="pid"/>
<result column="pname" property="pname"/>
<result column="money" property="money"/>
<collection property="projectRecordList" ofType="projectRecord">
<id column="pid" property="pid" />
<id column="empno" property="empno" />
<association property="emp" javaType="emp">
<id column="empno" property="empno"/>
<result column="ename" property="ename"/>
<result column="job" property="job"/>
<result column="mgr" property="mgr"/>
<result column="hiredate" property="hiredate"/>
<result column="sal" property="sal"/>
<result column="comn" property="comn"/>
<result column="deptno" property="deptno"/>
</association>
</collection>
</resultMap>
<select id="findProjectJoinEmpsByPid" resultMap="projectInfo">
select * from project p
left join projectrecord pr on pr.pid = p.pid
left join emp e on e.empno = pr.empno
where p.pid = #{pid}
</select>
</mapper>

@ -0,0 +1,4 @@
jdbc_driver=com.mysql.cj.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc_username=root
jdbc_password=12345678

@ -0,0 +1,11 @@
# debug
log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/msb.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

@ -0,0 +1,28 @@
<?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="jdbc.properties"/>
<!-- 类型别名 -->
<typeAliases>
<package name="com.msb.pojo"/>
</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>
<!-- <mapper class="com.msb.mapper.EmpMapper" />-->
<!-- <mapper class="com.msb.mapper.DeptMapper" />-->
<package name="com.msb.mapper"/>
</mappers>
</configuration>

@ -0,0 +1,57 @@
package com.msb.test;
import com.msb.mapper.DeptMapper;
import com.msb.mapper.EmpMapper;
import com.msb.pojo.Dept;
import com.msb.pojo.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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestDept {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resource);
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void testAddDept(){
DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
Dept dept = new Dept(null, "JAVA架构班", "深圳", null);
int rows = deptMapper.addDept(dept);
sqlSession.commit();
System.out.println(rows);
System.out.println(dept);
}
@Test
public void testFindDeptJoinEmpByDeptno(){
DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
Dept dept = deptMapper.findDeptJoinEmpByDeptno(20);
List<Emp> empList = dept.getEmpList();
System.out.println(dept.getDeptno());
System.out.println(dept.getDname());
System.out.println(dept.getLoc());
empList.forEach(System.out::println);
}
@After
public void release(){
sqlSession.close();
}
}

@ -0,0 +1,136 @@
package com.msb.test;
import com.msb.mapper.EmpMapper;
import com.msb.pojo.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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
public class TestEmp {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resource);
sqlSession = sqlSessionFactory.openSession(true);
}
@Test
public void testFindAll(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> empList = empMapper.findAll();
empList.forEach(System.out::println);
}
@Test
public void testFindEmpByNo(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = empMapper.findEmpByNo(7936);
System.out.println(emp);
}
@Test
public void testFindEmpByEmpnoAndSal(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> empList = empMapper.findEmpByEmpnoAndSal(20, 3000.0);
empList.forEach(System.out::println);
}
@Test
public void testFindEmpByEmpnoAndSal2(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = new Emp();
emp.setDeptno(20);
emp.setSal(3000.0);
List<Emp> empList = empMapper.findEmpByEmpnoAndSal2(emp);
empList.forEach(System.out::println);
}
@Test
public void testFindByName(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> empList = empMapper.findByName("A");
empList.forEach(System.out::println);
}
@Test
public void testAddEmp(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = new Emp(null, "小明", "java", 7833, new Date(), 18000.0, 2000.0, 20, null);
int row = empMapper.addEmp(emp);
System.out.println(row);
System.out.println(emp);
}
@Test
public void testUpdateNameByNo(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
int row = empMapper.updateNameByNo(7936, "小黑");
System.out.println(row);
}
@Test
public void testDeleteByEmpno(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
int row = empMapper.deleteByEmpno(7936);
System.out.println(row);
}
@Test
public void testFindByCondition(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = new Emp();
emp.setDeptno(20);
emp.setEname("A");
List<Emp> empList = empMapper.findByCondition(emp);
for(Emp empItem : empList){
System.out.println(empItem);
}
}
@Test
public void testUpdateEmpByCondition(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = new Emp();
emp.setEmpno(7939);
emp.setDeptno(20);
emp.setEname("A");
int rows = empMapper.updateEmpByCondition(emp);
System.out.println(rows);
}
@Test
public void testFindByEmpnosArr(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
int[] empnos = {7902, 7934, 7939};
List<Emp> empList = empMapper.findByEmpnosArr(empnos);
empList.forEach(System.out::println);
}
@Test
public void testFindByEmpnosList(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
List<Integer> empnos = new ArrayList<>();
Collections.addAll(empnos, 7902, 7934, 7939);
List<Emp> empList = empMapper.findByEmpnosList(empnos);
empList.forEach(System.out::println);
}
@Test
public void testFindEmpJoinDeptByEmpno(){
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
Emp emp = empMapper.findEmpJoinDeptByEmpno(7934);
System.out.println(emp);
}
@After
public void release(){
sqlSession.close();
}
}

@ -0,0 +1,50 @@
package com.msb.test;
import com.msb.mapper.DeptMapper;
import com.msb.mapper.ProjectMapper;
import com.msb.pojo.Dept;
import com.msb.pojo.Emp;
import com.msb.pojo.Project;
import com.msb.pojo.ProjectRecord;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestProject {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resource);
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void testFindDeptJoinEmpByDeptno(){
ProjectMapper projectMapper = sqlSession.getMapper(ProjectMapper.class);
Project project = projectMapper.findProjectJoinEmpsByPid(2);
System.out.println(project.getPid());
System.out.println(project.getPname());
System.out.println(project.getMoney());
List<ProjectRecord> projectRecordList = project.getProjectRecordList();
projectRecordList.forEach(System.out::println);
}
@After
public void release(){
sqlSession.close();
}
}

@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<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.msb.springmvc</groupId>
<artifactId>mybatis_01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--mysqlConnector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--mybatis 核心jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!--lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<!--日志的依赖 log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>

@ -0,0 +1,14 @@
package com.msb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer deptno;
private String dname;
private String loc;
}

@ -0,0 +1,23 @@
package com.msb.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comn;
private Integer deptno;
}

@ -0,0 +1,9 @@
<?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="DeptMapper">
<select id="findAll" resultType="dept">
select * from dept;
</select>
</mapper>

@ -0,0 +1,27 @@
<?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="DmlEmpMapper">
<!-- 增加员工
public int addEmp(Emp emp)
-->
<insert id="addEmp" parameterType="emp">
insert into emp values (DEFAULT, #{ename}, #{job}, #{mgr}, #{hiredate}, #{sal}, #{comn}, #{deptno});
</insert>
<!-- 根据工号修改员工姓名
public int updateEmpName(Emp emp)
-->
<update id="updateEmpName" parameterType="emp">
update emp set ename = #{ename} where empno = #{empno}
</update>
<!-- 根据员工编号删除员工信息
public int deleteByEmpno(int empno)
-->
<delete id="deleteByEmpno" parameterType="int">
delete from emp where empno=#{empno}
</delete>
</mapper>

@ -0,0 +1,30 @@
<?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="EmpMapper">
<!-- 查询所有的员工记录
public List<Emp> findAll()
-->
<select id="findAll" resultType="emp">
select * from emp;
</select>
<!-- 查询单条记录
public Emp findOne()
-->
<select id="findOne" resultType="emp">
select * from emp where empno = 7521;
</select>
<!-- 查询多条记录并以Map类型返回
public Map<key,Emp> findEmpMap()
<empno,Emp>
<key,Emp>
-->
<select id="findEmpMap" resultType="map">
select * from emp;
</select>
</mapper>

@ -0,0 +1,36 @@
<?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="ParamEmpMapper">
<!-- 根据员工id查找记录
public Emp findEmpByNo(int empno);
#{} : preparedStatement语句对象,参数使用?作为占位符处理
${} : tatment语句对象,参数是以字符串拼接的形式设置
-->
<select id="findEmpByNo" resultType="emp" parameterType="integer">
<!-- select * from emp where empno = #{empno} => select * from emp where empno = ?-->
<!-- select * from emp where empno = ${empno} => select * from emp where empno = 7369 -->
select * from emp where empno = #{empno}
</select>
<!-- 查询指定部门号和指定最低薪资的员工信息
public List<emp> findEmpByDeptnoAndSal(int deptno, double sal);
多个参数使用map的方式传递
map<String, Object>
-->
<select id="findEmpByDeptnoAndSal" resultType="emp" parameterType="map">
select * from emp where deptno = #{deptno} and sal &gt;= #{sal}
</select>
<!-- 查询指定部门号和指定最低薪资的员工信息
参数为对象
public List<emp> findEmpByObj (Emp emp);
-->
<select id="findEmpByObj" resultType="emp" parameterType="emp">
select * from emp where deptno = #{deptno} and sal &gt;= #{sal}
</select>
</mapper>

@ -0,0 +1,4 @@
jdbc_driver=com.mysql.cj.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc_username=root
jdbc_password=12345678

@ -0,0 +1,11 @@
# debug
log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/msb.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

@ -0,0 +1,29 @@
<?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="jdbc.properties"/>
<!-- 类型别名 -->
<typeAliases>
<package name="com.msb.pojo"/>
</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>
<mapper resource="com/msb/mapper/DeptMapper.xml"/>
<mapper resource="com/msb/mapper/EmpMapper.xml"/>
<mapper resource="com/msb/mapper/ParamEmpMapper.xml"/>
<mapper resource="com/msb/mapper/DmlEmpMapper.xml"/>
</mappers>
</configuration>

@ -0,0 +1,41 @@
package com.msb.test;
import com.msb.pojo.Dept;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class DemoTest {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(stream);
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void testDeptFindAll(){
List<Dept> deptList = sqlSession.selectList("findAll");
for (Dept dept: deptList) {
System.out.println(dept);
}
}
@After
public void release(){
sqlSession.close();
}
}

@ -0,0 +1,63 @@
package com.msb.test;
import com.msb.pojo.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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DmlEmpTest {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(stream);
sqlSession = sqlSessionFactory.openSession(true);
}
@Test
public void testAddEmp() {
// insert方法
Emp emp = new Emp(null, "demo", "java", 7899, new Date(), 20000.0, 1000.0, 20);
int rows = sqlSession.insert("addEmp", emp);
System.out.println(rows);
// sqlSession 在增删改操作的时候默认开启事务处理,如果没有手动提交事务,会自动回滚事务
// sqlSession.commit(); // 手动提交事务
// 也可以设置自动提交事务操作
// sqlSession = sqlSessionFactory.openSession(true);
}
@Test
public void testUpdateEmpName(){
Emp emp = new Emp();
emp.setEmpno(7937);
emp.setEname("了不起的Java");
int row = sqlSession.update("updateEmpName", emp);
System.out.println(row);
}
@Test
public void testDeleteByEmpno(){
int row = sqlSession.delete("deleteByEmpno", 7937);
System.out.println(row);
}
@After
public void release(){
sqlSession.close();
}
}

@ -0,0 +1,60 @@
package com.msb.test;
import com.msb.pojo.Dept;
import com.msb.pojo.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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class EmpTest {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(stream);
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void testFindAll() {
// selectList
List<Emp> empList = sqlSession.selectList("EmpMapper.findAll");
empList.forEach(System.out::println);
}
@Test
public void testFindOne() {
// selectOne
Emp emp = sqlSession.selectOne("EmpMapper.findOne");
System.out.println(emp);
}
@Test
public void testFindEmpMap() {
// selectMap
Map<Integer, Emp> empMap = sqlSession.selectMap("findEmpMap", "EMPNO");
Set<Integer> keys = empMap.keySet();
for(Integer key: keys){
System.out.println( key+ " :" +empMap.get(key));
}
}
@After
public void release(){
sqlSession.close();
}
}

@ -0,0 +1,62 @@
package com.msb.test;
import com.msb.pojo.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.After;
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;
import java.util.Set;
public class ParamEmpTest {
private SqlSession sqlSession;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(stream);
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void testFindEmpByNo() {
// selectOne, 传入参数的方式
Emp emp = sqlSession.selectOne("findEmpByNo", 7369);
System.out.println(emp);
}
@Test
public void testFindEmpByDeptnoAndSal() {
// 多个参数传递使用map传递的方式
Map<String, Object> args = new HashMap<>();
args.put("deptno", 20);
args.put("sal", 2000.0);
List<Emp> empList = sqlSession.selectList("findEmpByDeptnoAndSal", args);
empList.forEach(System.out::println);
}
@Test
public void testFindEmpByObj() {
// 多个参数,使用实体对象传递
Emp emp = new Emp();
emp.setDeptno(20);
emp.setSal(2000.0);
List<Emp> empList = sqlSession.selectList("findEmpByObj", emp);
empList.forEach(System.out::println);
}
@After
public void release(){
sqlSession.close();
}
}
Loading…
Cancel
Save