MyBatis+接口+mapper映射文件来对数据库进行增删改查实现流程:
首先要建一个数据库,再在数据库中建一个表,建表时需要给予字段,我这里就一id,name,age这三个字段来实现今天的查询数据啦
工程结构:
- 第一步:配置好2个dtd的文件,一个是mybatis-3-mapper.dtd文件,一个是mybatis-3-config.dtd文件,不知道配置点这里配置dtd文档教学
- 第二步:导入2个操作MyBatis的jar包
- 第三步:先在src下面先建一个包,这个包专门用来存放封装类,再到包下创建一个实体类,并且实体类名要与表名保持一致首字母大写,实体类里面封装的属性要与数据库表中保持一致。
Users.java
package com.anzhuo.bean;
/* 创建一个实体类,类名要表面保持一致首字母大写
* 实体类里面的属性要与表中字段保持一致
* */
public class Users {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 第四步:在src下面先建 一个包,这个包专门用来存放接口,再到包下创建一个接口,并在接口里面建立增删改查的方法。(创建接口I+实体类名)
IUsers.java
package com.anzhuo.dao;
import java.util.*;
import com.anzhuo.bean.*;
public interface IUsers {
/*
* 在这个接口定义了5个方法
* 1、定义了一个List集合并且集合里面存放表中字段也就是实体类,用来查询到表中所以数据的方法
* 2、定义了4个分别是sql增删改查操作,
* getUsers:查询
* getInsert:增加
* getUpdate:修改
* getDelete:删除
*/
public List<Users> getUserList();
public Users getUsers(int id);
public void getInsert(Users user);
public void getUpdate(Users user);
public void getDelete(int id);
}
5.第五步:在src下面创建两个xml配置文件,一个是mapper的一个是configuration的配置文件,mapper里面配置接口的关联和数据口的语句,configuration里面配置别名、基本环境配置(包含数据源和事务管理 ),映射文件配置。
mapper.xml
<!DOCTYPE mapper PUBLIC "mapper" "mybatis-3-mapper.dtd" >
<mapper namespace="com.anzhuo.dao.IUsers">
<!-- 插入数据,这里ID是自动递增的,所有不需要插入 -->
<insert id="getInsert" parameterType="Users" >
<!-- 数据库增加语句:#{}代表占位符 -->
insert into users(id,name,age) values(#{id},#{name},#{age})
</insert>
<!-- 查询表中所有的数据 -->
<select id="getUserList" resultType="com.anzhuo.bean.Users">
select * from users
</select>
<!-- 根据ID查询表数据 -->
<select id="getUsers" parameterType="int" resultType="com.anzhuo.bean.Users">
select * from users where id=#{id}
</select>
<!-- 根据ID修改表中数据-->
<update id="getUpdate" parameterType="com.anzhuo.bean.Users">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 根据ID删除表数据 -->
<delete id="getDelete" parameterType="int">
delete from users where id=#{id}
</delete>
</mapper>
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "config" "mybatis-3-config.dtd" >
<configuration>
<!-- 别名 -->
<typeAliases>
<typeAlias alias="Users" type="com.anzhuo.bean.Users"/>
</typeAliases>
<!-- 基础环境配置:包含数据源和事务管理 -->
<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://127.0.0.1:3306/mybatisdemo" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<!-- 映射文件配置 -->
<mappers>
<mapper resource="mapper.xml" />
</mappers>
</configuration>
- 第六步:在src下面先建一个包,这个包专门用来存放测试类,再到包下创建一个测试类,测试你是增加,删除,修改,查询
Test.java
package com.anzhuo.test;
import java.io.*;
import java.util.*;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import com.anzhuo.bean.Users;
import com.anzhuo.dao.*;
public class Test{
static SqlSessionFactory factory;
static SqlSession session;
public static void main(String[] args) throws IOException {
//第一步:读取MyBatis的主配置文件,通过Resources调用getResourceAsReader方法读取,获得了一个Reader对象
Reader is = Resources.getResourceAsReader("config.xml");
//第二步:得到SQLSession工厂对象,通过new一个SqlSessionFactoryBuilder调用 build方法获得一个sqlsessionfactory对象
factory = new SqlSessionFactoryBuilder().build(is);
//第三步:使用SqlSessionFactory对象调用到openSession方法打开session
session = factory.openSession();
//使用select方法来查询,以条件查询
// select();
//使用userList方法来查询表中所有的结果
// userList();
//使用update方法来修改表中数据
// update();
//使用delete方法来实现删除指定的一条数据
// delete();
//使用insert方法来添加表中数据
// insert();
}
//根据ID删除表中字段
public static void delete() {
//使用数据库会话工厂对象来开启会话
session = factory.openSession();
//使用数据库会话来获取到接口类并映射到数据库会话中去,并且用接口接收
IUsers ie = session.getMapper(IUsers.class);
//使用接口来获取接口中的删除方法并给它需要删除的主键列
ie.getDelete(7);
//使用数据库会话来手动提交
session.commit();
System.out.println("删除后:");
//查询我删除后的表中所有数据
userList();
}
//根据ID修改表中数据
public static void update() {
//使用数据库会话工厂对象来开启会话
session = factory.openSession();
//使用数据集库会话来获取到接口类并映射到数据库会话中去,并且用接口接收
IUsers iu = session.getMapper(IUsers.class);
//使用接口来获取接口中的查询方法并给它需要修改的主键列查询出来,并且修改他们的name,Age
Users us = iu.getUsers(4);
us.setName("阮六军");
us.setAge(18);
//使用接口来获取接口中的修改方法并给他们刚刚修改过后的值
iu.getUpdate(us);
//使用数据库会话来手动提交
session.commit();
System.out.println("更改后:");
//查询我修改后的表中所有数据
userList();
}
//根据ID查询指定主键列来查询
public static void select() {
session = factory.openSession();
IUsers it = session.getMapper(IUsers.class);
Users user = it.getUsers(3);
if(user != null){
System.out.println("编号:"+user.getId());
System.out.println("姓名:" + user.getName());
System.out.println( "年龄:" + user.getAge());
}
}
//查询表中所有数据
public static void userList() {
session = factory.openSession();
IUsers is = session.getMapper(IUsers.class);
//使用接口来获取接口中的集合方法并换行
print(is.getUserList());
}
//定义一个带有集合属性的静态方法
public static void print(List<Users> userList) {
//使用for循环从userList集合中,依次取出一个对象
for(Users us : userList){
System.out.println("编号:" + us.getId());
System.out.println("姓名:" + us.getName());
System.out.println("年龄:" + us.getAge());
}
}
//在表中增加一条数据
public static void insert() {
session = factory.openSession();
IUsers in = session.getMapper(IUsers.class);
//创建一个实体类来增加数据
Users user = new Users();
user.setId(7);
user.setName("佘子奇");
user.setAge(17);
in.getInsert(user);
session.commit();
System.out.println("插入成功");
userList();
}
}
希望我能帮到你,有什么不懂的就问我吧,实在不行可以加我QQ或微信,QQ:2778798480
微信:ti15074082590