一、需求分析
完成一个员工管理系统,实现员工数据的增删改查。要求:
1.使用MyBatis入门程序的方式,新建项目实现按照id查找员工的功能,使用测试类的方式进行测试。
2.对项目进行修改
1)开启延迟加载
2)为POJO实体类通过自动扫描包的形式设置别名
3)引入映射文件的方式由“使用类路径引入 ”修改为“使用包名引入 ”
4)测试查找功能
5)插入1条数据(赵六,42,员工)
6)将员工“赵六”的职位修改为“经理”
7)删除员工“赵六”
二、资料、视频教程
使用“MyBatis入门程序”相同的资料,资料下载
MyBatis核心配置
三、编码实现
1、搭建环境
1)数据库环境
mybatis数据库,t_employee表,添加三条记录
2)新建项目
Name:CoreConfProject,GroupID:com.sw
3)引入依赖
pom.xml文件
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.27</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
4)数据库连接的配置文件
src/main/resources,新建数据库连接的配置文件db.properties。要求MySQL8版本及以上
mysql.driver=com.mysql.cj.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false mysql.username=root mysql.password=123456
5)MyBatis核心配置文件
src/main/resources,新建MyBatis的核心配置文件mybatis-config.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"/> <!--配置运行环境--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <!-- 数据库连接相关配置 ,db.properties文件中的内容--> <dataSource type="POOLED"> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </dataSource> </environment> </environments> </configuration>
6)数据封装类
src/main/java,新建com.sw.pojo包,新建Employee类
public class Employee { private Integer id; private String name; private Integer age; private String position; //get、set //tostring }
7)Mybatis映射文件
src/main/resources,新建mapper文件夹,新建EmployeeMapper.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为映射的根节点--> <!--mapper为映射的根节点,namespace指定Dao接口的完整类名 mybatis会依据这个接口动态创建一个实现类去实现这个接口, 而这个实现类是一个Mapper对象-->
8)修改MyBatis核心配置文件
<!--mapping文件路径配置--> <mappers> <mapper resource="mapper/EmployeeMapper.xml"/> </mappers>
2、MyBatis入门程序方式
1)select功能
映射文件EmployeeMapper.xml,实现select方法
<mapper namespace="com.sw.pojo.Employee"> <select id="getOne" parameterType="int" resultType="com.sw.pojo.Employee"> select * from t_employee where id = #{id} </select> </mapper>
2)测试输出
src→main→java,Test类,新建main方法
//1、获取核心配置文件 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); //2、创建SqlSessionFactory工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //3、创建SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //核心业务 Employee employee = sqlSession.selectOne("com.sw.pojo.Employee.getOne", 1); System.out.println(employee); //5、释放资源 sqlSession.close();
3、MyBatis核心配置方式
1)开启延迟加载
修改核心配置文件mybatis-config.xml
<!--开启延迟加载--> <settings> <setting name="lazyLoadingEnabled" value="true"/> </settings>
2)设置别名
修改核心配置文件mybatis-config.xml
<!--设置别名--> <typeAliases> <package name="com.sw.pojo"/> </typeAliases>
3)引入映射文件
I.创建mapper接口。src/main/java创建com.sw.mapper包,新建EmployeeMapper接口,getOne方法。
public interface EmployeeMapper { Employee getOne(int id); }
II.修改映射文件EmployeeMapper.xml的namespace属性,namespace属性值必须为接口的完整类名
III.映射文件的引入方式修改为“使用包名引入 ”,核心配置文件mybatis-config.xml
注意: 映射文件的位置必须放在接口的同包目录下,映射文件名必须和接口同名
<!-- mapping文件路径配置 --> <mappers> <package name="com.sw.mapper" /> </mappers>
IV.修改项目结构
src/main/resources目录下,新建com/sw/mapper目录
4)测试查找数据功能
为com.sw.mapper包EmployeeMapper接口的getOne方法创建测试,右键→Generate→Test
@Before
public void setUp() throws Exception { //1、获取核心配置文件 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); //2、创建SqlSessionFactory工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //3、创建SqlSession对象 sqlSession = sqlSessionFactory.openSession(); }
@After
public void tearDown() throws Exception { //释放资源 if (sqlSession!=null){ sqlSession.close(); } }
@Test
public void testInsertOne() { EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class); Employee employee = employeeMapper.getOne(1); System.out.println(employee); }
5)插入数据功能
I.修改接口EmployeeMapper
int insertOne(Employee employee);
II.修改映射文件EmployeeMapper.xml
<insert id="insertOne" parameterType="Employee" keyProperty="id" useGeneratedKeys="true"> insert into t_employee (id,name,age,position) values (null ,#{name},#{age},#{position}); </insert>
III.测试
public void testTestInsertOne() { Employee employee = new Employee(); employee.setName("赵六"); employee.setAge(42); employee.setPosition("员工"); EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class); int res = employeeMapper.insertOne(employee); sqlSession.commit(); if (res==1){ System.out.println("插入数据成功"); } }
6)修改数据功能
将员工“赵六”的职位修改为“经理”
I.修改接口EmployeeMapper
int updateOne(Employee employee);
II.修改映射文件EmployeeMapper.xml
<update id="updateOne" parameterType="Employee"> update t_employee set name=#{name},age=#{age},position=#{position} where id=#{id} </update>
III.测试
public void testUpdateOne() { EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class); Employee employee = employeeMapper.getOne(4); employee.setPosition("经理"); int res = employeeMapper.updateOne(employee); sqlSession.commit(); if (res==1){ System.out.println("修改数据成功"); } }
7)删除数据功能
删除员工“赵六”
I.修改接口EmployeeMapper
int deleteOne(int id);
II.修改映射文件EmployeeMapper.xml
<delete id="deleteOne" parameterType="int"> delete from t_employee where id = #{id} </delete>
III.测试
public void testDeleteOne() { EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class); int res = employeeMapper.deleteOne(4); sqlSession.commit(); if (res==1){ System.out.println("删除数据成功"); } }