用Mybatis框架实现增删改查

一、搭建Mybatis框架

可输出表格数据,搭建成功! 

二、进行增删改查操作(在UserMapper.xml中修改</mapper>之间的内容)

1.检索所有的职工姓名与年薪

修改UserMapper.xml里的代码为以下

<select id="selectAll" resultType="org.example.pojo.User">
        select ename,Sal from emp;
</select>

修改User类中toSpring函数为

@Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("User{");
        if(empno != 0) {
            sb.append("empno=").append(empno);
        }
        if (ename != null) {
            sb.append(", ename='").append(ename).append('\'');
        }
        if (Job != null) {
            sb.append(", Job='").append(Job).append('\'');
        }
        if (Mgr != null) {
            sb.append(", Mgr='").append(Mgr).append('\'');
        }
        if (Hiredate != null) {
            sb.append(", Hiredate='").append(Hiredate).append('\'');
        }
        if (Sal != 0.0) {
            sb.append(", Sal=").append(Sal);
        }
        if (Comm != 0.0) {
            sb.append(", Comm=").append(Comm);
        }
        if(deptno != 0) {
            sb.append(", deptno=").append(deptno);
        }
        sb.append('}');
        return sb.toString();
    }

其中sb.append()的作用是向这个stringbuilder的末尾添加字符串。

 (篇幅原因省略后续输出)

2. 检索所有的工作和相应的部门编号

<select id="selectAll" resultType="org.example.pojo.User">
        select Job,deptno from emp;
</select>

  (篇幅原因省略后续输出)

3.检索工作是salesman的员工姓名

<select id="selectAll" resultType="org.example.pojo.User">
        select ename from emp where Job = "SALESMAN";
</select>

 4.检索员工津贴commnullcomm小于300的员工姓名和津贴值

PS:“<”在.xml文件中有特殊含义,应该用“&lt;”替代。

 <select id="selectAll" resultType="org.example.pojo.User">
        SELECT ename, Comm FROM emp WHERE Comm IS NULL OR Comm &lt; 300;
    </select>

   (篇幅原因省略后续输出)

 5.检索所有职员的姓名和所在部门名称

<select id="selectAll" resultType="org.example.pojo.User">
        select emp.ename,dept.Dname from emp join dept on emp.deptno = dept.Deptno;
    </select>

PS:由于涉及到两个表,因此要在User类中添加新的变量并get/set,在输出语句中也要增加输出,修改后的代码如下

package org.example.pojo;

import java.awt.*;

public class User {
    private int empno;
    private String ename;
    private String Job;
    private String Mgr;
    private String Hiredate;
    private double Sal;
    private double Comm;
    private int deptno;
    private int Deptno;
    private String Dname;
    private String Loc;
    public int getDeptno() {
        return Deptno;
    }
    public String getDname() {
        return Dname;
    }

    public String getLoc() {
        return Loc;
    }
    public int getEmpno() {
        return empno;
    }

    public String getEname() {
        return ename;
    }

    public String getJob() {
        return Job;
    }

    public String getMgr() {
        return Mgr;
    }

    public String getHiredate() {
        return Hiredate;
    }

    public double getSal() {
        return Sal;
    }

    public double getComm() {
        return Comm;
    }

    public int getdeptno() {
        return deptno;
    }

    public void setDname(String dname) {
        this.Dname = dname;
    }

    public void setLoc(String loc) {
        this.Loc = loc;
    }
    public void setDeptno(int Deptno) {
        this.Deptno = Deptno;
    }
    public void setEmpno(int empno) {
        this.empno = empno;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public void setJob(String job) {
        Job = job;
    }

    public void setMgr(String mgr) {
        Mgr = mgr;
    }

    public void setHiredate(String hiredate) {
        Hiredate = hiredate;
    }

    public void setSal(double sal) {
        Sal = sal;
    }

    public void setComm(double comm) {
        Comm = comm;
    }

    public void setdeptno(int deptno) {
        this.deptno = deptno;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("User{");
        if(empno != 0) {
            sb.append("empno=").append(empno);
        }
        if (ename != null) {
            sb.append(", ename='").append(ename).append('\'');
        }
        if (Job != null) {
            sb.append(", Job='").append(Job).append('\'');
        }
        if (Mgr != null) {
            sb.append(", Mgr='").append(Mgr).append('\'');
        }
        if (Hiredate != null) {
            sb.append(", Hiredate='").append(Hiredate).append('\'');
        }
        if (Sal != 0.0) {
            sb.append(", Sal=").append(Sal);
        }
        if (Comm != 0.0) {
            sb.append(", Comm=").append(Comm);
        }
        if(deptno != 0) {
            sb.append(", deptno=").append(deptno);
        }
        if(Deptno != 0) {
            sb.append(", Deptno=").append(Deptno);
        }
        if(Dname != null) {
            sb.append(", Dname=").append(Dname);
        }
        if(Loc != null) {
            sb.append(", Loc=").append(Loc);
        }
        sb.append('}');
        return sb.toString();
    }
}

 (篇幅原因省略后续输出)

6.检索在任何位置有字母“A”的员工姓名

 <select id="selectAll" resultType="org.example.pojo.User">
        select ename from emp where ename collate utf8mb4_bin LIKE '%A%' or job collate utf8mb4_bin LIKE '%A%';
    </select>

  (篇幅原因省略后续输出)

7.往eemp表格中插入五条记录

 修改mybatis-config.xml文件(Mybatis的基本配置),转化成你要操作的数据库名

 <property name="url" value="jdbc:mysql://localhost:3306/你实际用的数据库名?useSSl=true"/>

修改User类,添加和删除表格对应的变量,建立set/get,修改输出语句

package org.example.pojo;

import java.awt.*;

public class User {
    private int empno;
    private String ename;
    private String job;
    private String hiredate;
    private double salary;
    private double comm;
    private int deptno;

    public void setEmpno(int empno) {
        this.empno = empno;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public void setHiredate(String hiredate) {
        this.hiredate = hiredate;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public void setComm(double comm) {
        this.comm = comm;
    }

    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }

    public int getEmpno() {
        return empno;
    }

    public String getEname() {
        return ename;
    }

    public String getJob() {
        return job;
    }

    public String getHiredate() {
        return hiredate;
    }

    public double getSalary() {
        return salary;
    }

    public double getComm() {
        return comm;
    }

    public int getDeptno() {
        return deptno;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("User{");
        if(empno != 0) {
            sb.append("empno=").append(empno);
        }
        if (ename != null) {
            sb.append(", ename='").append(ename).append('\'');
        }
        if (job != null) {
            sb.append(", Job='").append(job).append('\'');
        }
        if (hiredate != null) {
            sb.append(", hiredate='").append(hiredate).append('\'');
        }
        if (salary != 0.0) {
            sb.append(", Sal=").append(salary);
        }
        if (comm != 0.0) {
            sb.append(", Comm=").append(comm);
        }
        if(deptno != 0) {
            sb.append(", deptno=").append(deptno);
        }
        sb.append('}');
        return sb.toString();
    }
}

修改Mybatis_demo里的语句,把test.selectAll改成insertUser

List<User> users = sqlSession.selectList("test.insertUser");

把select语句删除,修改成 insert语句,插入数据

<insert id="insertUser" parameterType="org.example.pojo.User">
        insert into eemp (empno, ename, job, deptno)
        values (6,'Harry','SALESMAN',2),(7,'Hermione','Manager',1),(8,'Dobby','CLERK',2),(9,'Filch','SALESMAN',3),(10,'Eid','Manager',3);
    </insert>

刷新表格,发现插入成功(6-10为新插入的数据,部分数据未插入) 

8.eemp中删除名为“Dobby”的记录

修改Mybatis_demo里的语句,把test.insertUser改成deleteUser

List<User> users = sqlSession.selectList("test.deleteUser");

 把insert语句删除,修改成delete语句

<delete id="deleteUser" parameterType="int">
        delete from eemp where ename = 'Dobby';
    </delete>

刷新表格,名为“Dobby”的那行数据消失 

完结撒花~~!! 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 是一个开源的持久化框架,可以帮助我们简化数据库操作的编写。下面是一个使用 MyBatis 实现增删改查系统的示例: 1. 配置 MyBatis 首先需要在项目中引入 MyBatis 的依赖,然后在项目中配置 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> <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"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 其中,配置文件中需要配置数据库的连接信息和映射文件的位置。 2. 创建数据表 在数据库中创建一个用户表,例如: ``` CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 3. 创建实体类 创建一个 User 实体类,例如: ``` public class User { private Integer id; private String name; private Integer age; // getter and setter } ``` 4. 创建映射文件 在项目中创建一个 UserMapper.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.example.mapper.UserMapper"> <!-- 查询全部用户 --> <select id="findAll" resultType="User"> SELECT * FROM user </select> <!-- 根据 id 查询用户 --> <select id="findById" parameterType="int" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 新增用户 --> <insert id="insert" parameterType="User"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <!-- 修改用户 --> <update id="update" parameterType="User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <!-- 删除用户 --> <delete id="delete" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 其中,映射文件中定义了对应的 SQL 语句和参数类型。 5. 创建 DAO 层 创建一个 UserDAO 接口和实现类,例如: ``` public interface UserDAO { List<User> findAll(); User findById(Integer id); void insert(User user); void update(User user); void delete(Integer id); } public class UserDAOImpl implements UserDAO { private SqlSessionFactory sessionFactory; public UserDAOImpl(SqlSessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public List<User> findAll() { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); return mapper.findAll(); } } public User findById(Integer id) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); return mapper.findById(id); } } public void insert(User user) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.insert(user); session.commit(); } } public void update(User user) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.update(user); session.commit(); } } public void delete(Integer id) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.delete(id); session.commit(); } } } ``` 其中,UserDAO 接口中定义了增删改查的方法,UserDAOImpl 实现了 UserDAO 接口,并且调用了对应的映射文件中的 SQL 语句。 6. 使用 DAO 层 在项目中使用 UserDAO 接口和实现类来进行数据库的操作,例如: ``` SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); UserDAO userDAO = new UserDAOImpl(sessionFactory); // 查询全部用户 List<User> userList = userDAO.findAll(); // 根据 id 查询用户 User user = userDAO.findById(1); // 新增用户 User newUser = new User(); newUser.setName("Tom"); newUser.setAge(20); userDAO.insert(newUser); // 修改用户 user.setName("Jerry"); user.setAge(30); userDAO.update(user); // 删除用户 userDAO.delete(1); ``` 这样就可以使用 MyBatis 框架实现增删改查系统了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值