1.创建环境
1.导包:
在resource目录下导入一个日志文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
1.数据库和表
2.封装数据库的JavaBean对象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
private Integer id;
private String empName;
private String email;
private String gender;
}
3.操作数据库的dao接口,这个接口中增删改查方法
public interface EmployeeDao {
public int insertEmployee(Employee employee);
public boolean deleteEmployee(int id);
public int updateEmployee(Employee employee);
public Employee getEmpById(int id);
}
2.写配置文件
1.写全局配置文件: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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_01?
useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
</configuration>
2.写映射配置文件:EmployeeDao.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.hh.dao.EmployeeDao">
<!--
#{属性名}:从测试类方法传入的参数对象中取出对应属性的值
这里面的属性名必须和实体类中的属性名完全一致
-->
<select id="getEmpById" resultType="com.hh.bean.Employee">
select * from t_employee where id=#{id}
</select>
<update id="updateEmployee">
update t_employee
set empname=#{empName},gender=#{gender},email=#{email} where id=#{id}
</update>
<delete id="deleteEmployee">
delete from t_employee where id=#{id}
</delete>
<insert id="insertEmployee">
insert into t_employee(empname,gender,email) values (#{empName},#{gender},#{email})
</insert>
</mapper>
3.将映射配置文件在全局配置文件中注册:
<!--引入我们自己编写的每一个接口的实现文件-->
<mappers>
<mapper resource="com/hh/dao/EmployeeDao.xml"/>
</mappers>
3.编写测试类
对于查询数据库中数据
public class MyTest {
SqlSessionFactory sqlsessionFactory;
@Before
public void initSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
sqlsessionFactory = builder.build(inputStream);
}
@Test
public void testSelect() throws IOException {
SqlSession sqlSession = sqlsessionFactory.openSession();
EmployeeDao mapper = sqlSession.getMapper(EmployeeDao.class);
Employee employee = mapper.getEmpById(1);
System.out.println(employee);
}
}
对于添加数据,删除数据,修改数据都需要手动提交commit
首先添加数据:
@Test
public void testInsert(){
SqlSession sqlSession = sqlsessionFactory.openSession();
try {
EmployeeDao mapper = sqlSession.getMapper(EmployeeDao.class);
int i = mapper.insertEmployee(
new Employee(null, "tomcat", "tomcat@qq.com", "0"));
System.out.println(i);
}finally {
//手动提交
sqlSession.commit();
sqlSession.close();
}
}
修改数据:
@Test
public void testUpdate(){
SqlSession sqlSession = sqlsessionFactory.openSession();
try {
EmployeeDao mapper = sqlSession.getMapper(EmployeeDao.class);
mapper.updateEmployee(new Employee(6,"gutianle","gutainlw@qq.com","1"));
} finally {
//手动提交
sqlSession.commit();
sqlSession.close();
}
}
删除数据:
@Test
public void testDelete(){
SqlSession sqlSession = sqlsessionFactory.openSession();
try {
EmployeeDao mapper = sqlSession.getMapper(EmployeeDao.class);
mapper.deleteEmployee(6);
} finally {
//手动提交
sqlSession.commit();
sqlSession.close();
}
}