实验三 Mybatis的使用
实验目的:
- 了解SqlSession的使用
- 理解applicationConetext.xml配置文件的使用
- 熟悉Mapper.xml配置文件的使用
- 使用Mybatis完成增删改查的功能
实验类型:
验证性
实验学时:
2学时
实验内容:
实验任务1:导入Mybatis相关依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
实验任务2:创建dao层接口,并编写代码
public interface CustomerDao {
public List<Customer> query();
public void add(Customer customer);
public void update(Customer customer);
@Select("select * from customer where id=#{sid}")
public Customer queryById(@Param("sid") Integer id);
public void delete(Integer id);
}
实验任务3:创建pojo类
public class Customer {
private Integer id;
private String username;
private String jobs;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", username='" + username + '\'' +
", jobs='" + jobs + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
实验任务4:创建mybaits配置文件与Mapper配置文件
<?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"/>
<typeAliases>
<package name="com.hxci.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据库连接相关配置 ,db.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!-- mapping文件路径配置 -->
<mappers>
<mapper resource="mapper/customerMapper.xml"/>
<mapper resource="mapper/studentMapper.xml"/>
</mappers>
</configuration>
<?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.hxci.dao.CustomerDao">
<select id="query" resultType="Customer" >
select * from customer;
</select>
<insert id="add" parameterType="com.hxci.pojo.Customer">
insert into customer(username,jobs,phone) values(#{username},#{jobs},#{phone});
</insert>
<update id="update" parameterType="com.hxci.pojo.Customer">
update customer set username=#{username},jobs=#{jobs},phone=#{phone} where id=#{id};
</update>
<delete id="delete" parameterType="int">
delete from customer where id=#{id};
</delete>
</mapper>
实验任务5:创建service接口与实现类
public interface CustomerService {
public List<Customer> query();
public void add(Customer customer);
public void update(Customer customer);
public Customer queryById( Integer id);
public void delete(Integer id);
}
public class CustomerServiceImpl extends BaseDao implements CustomerService {
SqlSession session;
CustomerDao dao;
@Override
public List<Customer> query() {
session=getSqlSession();
dao= session.getMapper(CustomerDao.class);
List<Customer> list=dao.query();
closeSession(session);
return list;
}
@Override
public void add(Customer customer) {
session=getSqlSession();
dao= session.getMapper(CustomerDao.class);
dao.add(customer);
session.commit();
closeSession(session);
}
@Override
public void update(Customer customer) {
setSessionandDao();
dao.update(customer);
session.commit();
closeSession(session);
}
@Override
public Customer queryById(Integer id) {
setSessionandDao();
Customer customer=dao.queryById(id);
closeSession(session);
return customer;
}
@Override
public void delete(Integer id) {
setSessionandDao();
dao.delete(id);
session.commit();
closeSession(session);
}
//设置session与dao
public void setSessionandDao(){
session=getSqlSession();
dao= session.getMapper(CustomerDao.class);
}
}
实验任务6:创建工具类
public class BaseDao {//工具类
private static SqlSessionFactory sqlMapper;
static {
String resources = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resources);
} catch (IOException e) {
e.printStackTrace();
}
sqlMapper =new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSession getSqlSession(){
SqlSession session=sqlMapper.openSession();
return session;
}
public static void closeSession(SqlSession sqlSession){
sqlSession.close();
}
}
实验任务7:创建测试类,测试
public class MybatisTest{
public static void main(String[] args) {
CustomerService service=new CustomerServiceImpl();
Customer customer=new Customer();
customer.setJobs("manager");
customer.setPhone("1111111111");
customer.setUsername("五十六精研");
service.add(customer);
}
}