在前面【mybatis映射器】这节中,用到了XML配置文件,这节就利用这个方式来做个完整的CRUD例子。

这节用到的数据表还是前面【mybatis接口注释】这节中的数据库表user

mybatis增删改查_mybatis

 

 

 

1、创建工程并配置所需环境

在eclipse中创建动态web项目mybatisDemoA8,将MyBatis目录下lib目录下的jar包,核心包mybatis-3.5.6.jar以及 MySQL 数据库的驱动 jar 包(mysql-connector-java-5.1.38-bin.jar)复制到WebContent /WEB-INF/lib 目录中,选择这些包,右键添加到编译路径中。

mybatis增删改查_配置文件_02

 

 

 2,在src目录下创建包com.yiibai.mybatis.bean,添加类User,此类对应数据库中的user表,代码如下:

package com.yiibai.mybatis.bean;

public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
private String name;
private String dept;
private String phone;
private String website;
}

3,在src目录下创建com.yiibai.mybatis.dao包,并在包下添加接口类IUser,代码如下:

package com.yiibai.mybatis.dao;

import java.util.List;
import com.yiibai.mybatis.bean.User;

public interface IUser {
public List<User> getUserList();

public void insertUser(User user);

public void updateUser(User user);

public void deleteUser(int id);

public User getUser(int id);
}

4,在com.yiibai.mybatis.bean包下创建配置文件User.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.yiibai.mybatis.dao.IUser">
<!-- 搜索操作 -->
<select id="getUser" parameterType="int"
resultType="com.yiibai.mybatis.bean.User">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 添加操作 -->
<insert id="insertUser" parameterType="User">
INSERT INTO user(name,dept, website,phone)
VALUES (#{name}, #{dept}, #{website}, #{phone})
</insert>
<!-- 查询列表 -->
<select id="getUserList" resultType="com.yiibai.mybatis.bean.User">
SELECT * FROM user
</select>
<!-- 修改操作 -->
<update id="updateUser" parameterType="User">
UPDATE user SET name=#{name},dept = #{dept},website = #{website},phone =#{phone}
WHERE id =#{id}
</update>
<!-- 删除操作 -->
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>

 

注意:在User.xml文件中分别对应了增删改查的操作,每一个操作的 ID 对应于IUser接口的方法名称,这是必须一致对应的。还有就是User.xml 配置文件mapper namespace="com.yiibai.mybatis.dao.IUser" ,命名空间必须与IUser定义的package 和接口一致,即必须与IUser.java这个接口类的命名空间一样,如果不一致就会出错 

5,在src下创建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>
<!-- 定义别名 -->
<typeAliases>
<typeAlias alias="User" type="com.yiibai.mybatis.bean.User" />
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库的URL -->
<property name="url"
value="jdbc:mysql://localhost:3306/cctv?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 映射器,将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="com/yiibai/mybatis/bean/User.xml" />
</mappers>
</configuration>

6,创建com.yiibai.mybatis.test包,在包下添加测试类test,代码如下:

package com.yiibai.mybatis.test;

import java.io.Reader;
import java.text.MessageFormat;
import java.util.List;
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 com.yiibai.mybatis.bean.User;
import com.yiibai.mybatis.dao.IUser;

public class test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
// 用户数据列表
getUserList();
// 插入数据
testInsert();
// 更新用户
testUpdate();
// 删除数据
// testDelete();
} finally {
session.close();
}
}

// 添加用户
public static void testInsert() {
try {
SqlSession session = sqlSessionFactory.openSession();// 获取Session连接
IUser userMapper = session.getMapper(IUser.class); // 获取Mapper
User user = new User();
user.setName("baidu");
user.setDept("xiao");
user.setWebsite("http://www.baidu.com");
user.setPhone("120");
userMapper.insertUser(user);
session.commit();
getUserList();
} catch (Exception e) {
e.printStackTrace();
}
}

// 获取用户列表
public static void getUserList() {
try {
SqlSession session = sqlSessionFactory.openSession();
IUser iuser = session.getMapper(IUser.class);
printUsers(iuser.getUserList());// 显示User信息
} catch (Exception e) {
e.printStackTrace();
}
}

// 修改用户
public static void testUpdate() {
try {
SqlSession session = sqlSessionFactory.openSession();
IUser iuser = session.getMapper(IUser.class);
printUsers(iuser.getUserList());
User user = iuser.getUser(1); // 执行更新
user.setName("cctv");
iuser.updateUser(user);
session.commit();// 提交事务
printUsers(iuser.getUserList());
} catch (Exception e) {
e.printStackTrace();
}
}

// 删除用户信息
public static void testDelete() {
try {
SqlSession session = sqlSessionFactory.openSession();
IUser iuser = session.getMapper(IUser.class);
printUsers(iuser.getUserList()); // 显示删除之前User信息
iuser.deleteUser(2);// 执行删除
session.commit();// 提交事务
printUsers(iuser.getUserList());// 显示删除之后User信息
} catch (Exception e) {
e.printStackTrace();
}
}

/**
*
* 打印用户信息到控制台
*
* @param users
*/
private static void printUsers(final List<User> users) {
int count = 0;
for (User user : users) {
System.out.println(MessageFormat.format(
"============= User[{0}]=================", ++count));
System.out.println("用户Id: " + user.getId());
System.out.println("用户名称: " + user.getName());
System.out.println("用户部门: " + user.getDept());
System.out.println("个人主页: " + user.getWebsite());
}
}

}

7,执行程序代码,结果如下:

mybatis增删改查_配置文件_03

 

 数据库表内容显示如下:

mybatis增删改查_配置文件_04

 

本节代码:mybatisDemoA8,下节继续。