初学MyBatis框架
- 如何下载MyBatis
1) 下载网址 https://github.com/mybatis/mybatis-3/
- 开发环境的准备
- 导入MyBatis框架的jar包、Mysql驱动包、log4j的jar包
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.jsp</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
- 创建测试表
1)创建数据库 sutmanage
2)创建表empuser
- 创建javaBean
package pojo;
public class Employee {
private Integer id;
private String name;
private String pwd;
private String gender;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Employee(Integer id, String name, String pwd, String gender) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.gender = gender;
}
public Employee(String name, String pwd, String gender) {
this.name = name;
this.pwd = pwd;
this.gender = gender;
}
public Employee(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
public Employee() {
}
}
- 创建MyBatis的全局配置文件
<?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"></properties>
<!-- 数据库连接环境的配置 -->
<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>
<!-- 引入SQL映射文件,Mapper映射文件 -->
<mappers>
<mapper resource="mapper/employee.xml"/>
</mappers>
</configuration>
- 创建动态资源文件
- 你可以创建一个资源文件,名为db.properties的文件,将四个连接字符串的数据在资源文件中通过键值 对(key=value)的方式放置,不要任何符号,一条占一行
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/stumanage
jdbc.username=root
jdbc.password=102588
- 创建Mybatis的sql映射文件
<?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="mapper.EmployeeInterface">
<select id="findAll" resultType="pojo.Employee">
SELECT
id id,
username name,
password pwd,
gender gender
FROM
empuser
</select>
<select id="findEmp" resultType="pojo.Employee" parameterType="pojo.Employee">
SELECT
id id,
username name,
password pwd,
gender gender
FROM
empuser
WHERE
username = #{name}
AND
password = #{pwd}
</select>
<insert id="addEmp" parameterType="hashmap">
INSERT INTO
empuser(username,password,gender)
VALUES (#{name},#{pwd},#{gender})
</insert>
<update id="updateEmp" parameterType="pojo.Employee">
UPDATE
empuser
SET
username = #{name},
password = #{pwd},
gender = #{gender}
WHERE
id = #{id}
</update>
<delete id="delEmp" parameterType="int">
DELETE FROM
empuser
WHERE
id=#{id}
</delete>
</mapper>
- Mapper接口开发
- 写编Mapper接口
package mapper;
import pojo.Employee;
import java.util.HashMap;
import java.util.List;
public interface EmployeeInterface {
//查询
public List<Employee> findAll();
//根据对象查询
public Employee findEmp(Employee employee);
//添加
public void addEmp(HashMap<String,String> map);
//通过id修改
public void updateEmp(Employee employee);
//通过id删除
public void delEmp(int id);
}
- 完成两个绑定
① Mapper接口与Mapper映射文件的绑定在Mppper映射文件中的标签中的namespace中必须指定Mapper接口的全类名
② Mapper映射文件中的增删改查标签的id必须指定成Mapper接口中的方法名. - 获取Mapper接口的代理实现类对象
- 测试
import mapper.EmployeeInterface;
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.Before;
import org.junit.Test;
import pojo.Employee;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
public class MoTest {
SqlSession session = null;
@Before
public void Test0() throws IOException {
String conf = "configuration.xml";
Reader reader = Resources.getResourceAsReader(conf);
//创建SessionFactory对象
SqlSessionFactoryBuilder sfb =new SqlSessionFactoryBuilder();
SqlSessionFactory sf = sfb.build(reader);
//创建Session
session = sf.openSession();
}
//查询所有
@Test
public void Test1(){
EmployeeInterface mapper = session.getMapper(EmployeeInterface.class);
List<Employee> findAll = session.selectList("findAll");
for (Employee e:findAll){
System.out.println(e.getId()+e.getName()+e.getPwd()+e.getGender());
}
}
//根据查询某一个
@Test
public void Test2(){
String name = "张三";
String pwd = "zhang123";
EmployeeInterface mapper = session.getMapper(EmployeeInterface.class);
Employee emp = mapper.findEmp(new Employee(name, pwd));
System.out.println(emp.getId()+emp.getName()+emp.getPwd()+emp.getGender());
}
//添加
@Test
public void Test3(){
String name ="啦啦";
String pwd = "lala123";
String gender="女";
EmployeeInterface mapper = session.getMapper(EmployeeInterface.class);
HashMap<String,String> map = new HashMap<>();
map.put("name",name);
map.put("pwd",pwd);
map.put("gender",gender);
mapper.addEmp(map);
session.commit();
System.out.println("添加成功!");
}
//根据id修改
@Test
public void Test4(){
String name = "修改";
String pwd = "xiu123";
String gender = "男";
int id = 2;
Employee employee = new Employee(id,name,pwd,gender);
EmployeeInterface mapper = session.getMapper(EmployeeInterface.class);
mapper.updateEmp(employee);
session.commit();
System.out.println("修改成功!");
}
//根据id删除
@Test
public void Test5(){
int id = 3;
EmployeeInterface mapper = session.getMapper(EmployeeInterface.class);
mapper.delEmp(id);
session.commit();
System.out.println("删除成功!");
}
}
注: