1.搭建环境
一.IDEA
二.http://www.mvnrepository.com。下载jar包的网站。
2.详细步骤
1.首先启动IDEA
2.
3.
4.
5.创建好的界面
6.删除后创建module子模板。
7.同理可得。
8.
9.
10.按照7——8步依次创建dao—module层和service—层
11.添加依赖
dao层添加依赖如下:
service层添加依赖如下:
根层依赖如下:
12.创建数据库。
12-2
12-3:之前创建好了,dos创建数据库和图形化界面创建数据库命令一样。
12-4
12-5
11.创建实体类,删除test和resources
12.创建实体类的包(edu.jb.entity)
13.在实体类包中创建一个员工的类
14.Alt+Insert快捷键自动创建get,set方法。
15.同理可得再创建一个实体类DepartmentInfo
16.在dao层创建一个包(com.nf.mappers)在包下面创建一个接口
17.StaffMapper接口
1 package com.nf.mappers; 2 3 import com.nf.entity.DepartmentInfo; 4 import com.nf.entity.Staff; 5 6 import java.util.List; 7 8 public interface StaffMapper { 9 public List<Staff>findStaffById(); 10 public List<DepartmentInfo>getAllDepartmentInfo(); 11 }
18.在dao层创建三个配置文件
1.StaffMapper.xml配置文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="com.nf.mappers.StaffMapper"> 5 <resultMap id="xxx" type="Staff"> 6 <id property="sid" column="sid"></id> 7 <result property="sname" column="sname"></result> 8 <result property="email" column="email"></result> 9 </resultMap> 10 <select id="findStaffById" resultMap="xxx"> 11 select * from staff where sid in ( 12 select sid from staff_house where did=#{did} 13 ); 14 </select> 15 <resultMap id="myDepartment" type="DepartmentInfo"> 16 <id property="did" column="did"></id> 17 <result property="name" column="name"></result> 18 <result property="edrs" column="edrs"></result> 19 <result property="kcount" column="kcount"></result> 20 <result property="kzl" column="kzl"></result> 21 <collection property="staffList" select="findStaffById" column="did"></collection> 22 </resultMap> 23 <select id="getAllDepartmentInfo" resultMap="myDepartment"> 24 select did,name,edrs,kcount,(edrs-kcount)/edrs kzl from 25 (select did,count(1) kcount from staff_house group by did) hh,department 26 where hh.did=department.id 27 order by kzl desc 28 </select> 29 </mapper>
2.application.properties配置文件
#这个文件用来记录配置信息,一般而言,就是你的数据库相关信息 jdbc.driverClassName=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/company?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true jdbc.username=root jdbc.password=123456
3.mybatis-config.xml配置文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 <properties resource="application.properties"></properties> 6 <typeAliases> 7 <package name="com.nf.entity"></package> 8 </typeAliases> 9 <environments default="development"> 10 <environment id="development"> 11 <transactionManager type="jdbc"></transactionManager> 12 <dataSource type="POOLED"> 13 <property name="driver" value="${jdbc.driverClassName}" /> 14 <property name="url" value="${jdbc.url}" /> 15 <property name="username" value="${jdbc.username}" /> 16 <property name="password" value="${jdbc.password}" /> 17 </dataSource> 18 </environment> 19 </environments> 20 <mappers> 21 <mapper resource="mapper/StaffMapper.xml"/> 22 </mappers> 23 </configuration>
19.在service层创建一个包(com.nf.service)再包里面创建一个接口和一个具体的实现类
1.StaffService接口
1 package com.nf.service; 2 3 import com.nf.entity.Staff; 4 5 public interface StaffService { 6 public Staff test(); 7 }
2.StaffServicelmpl实现类
1 package com.nf.service; 2 3 import com.nf.entity.DepartmentInfo; 4 import com.nf.entity.Staff; 5 import com.nf.mappers.StaffMapper; 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 10 11 import java.io.IOException; 12 import java.io.InputStream; 13 import java.util.List; 14 15 public class StaffServicelmpl implements StaffService { 16 public StaffMapper staffMapper=null; 17 public Staff test() { 18 SqlSession session = null; 19 try { 20 //高度的耦合(后面要想办法彻底的解构) 21 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 22 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 23 session = sessionFactory.openSession(); 24 //直接创建一个dao层的实现类 25 staffMapper = session.getMapper(StaffMapper.class); 26 System.out.println("我真的很想知道这个实现类是谁:"+staffMapper); 27 28 } catch (IOException e) { 29 e.printStackTrace(); 30 return null; 31 } 32 List<DepartmentInfo> infos=staffMapper.getAllDepartmentInfo(); 33 for(DepartmentInfo d:infos){ 34 System.out.println(d.getDid()+" "+d.getName()+" "+d.getKcount()+"人"+" "+d.getKzl()); 35 System.out.print("("); 36 37 38 List<Staff> staff=d.getStaffList(); 39 for(Staff s:staff){ 40 System.out.print(s.getSname()+"|"); 41 } 42 System.out.print(")"); 43 System.out.println(); 44 } 45 return null; 46 } 47 }
20.最后用实现类测试,步骤如下:在实现类里单机右键--go to---Test---new test,就会在test层创建一个测试类。
21.service test测试类:
StaffServicelmplTest文件
1 package com.nf.service; 2 3 import com.nf.entity.Staff; 4 import org.junit.jupiter.api.Test; 5 6 import static org.junit.jupiter.api.Assertions.*; 7 8 class StaffServicelmplTest { 9 10 @Test 11 void test1() { 12 Staff staff=new StaffServicelmpl().test(); 13 } 14 }
22.运行结果如下:
23.简单的配置就完成了谢谢。个人笔记,不喜勿喷。