Mybatis增删改查

发布于:2023-01-04 ⋅ 阅读:(172) ⋅ 点赞:(0)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

1.创建Mybatis配置文件mybatis-config.xml

提示:resources文件下新建

2.创建实体类对象

  • 新建一个com.etc.bean包

  •  新建Employee 类,Department类属性对应数据库employee 表,department表的属性

Employee :

 Department:

3.编写接口

  • 创建com.etc.dao包

 

  • 创建Employee Dao接口

  • 创建 Department Dao接口

 

 4.编写接口的实现类Employee \Department Mapper.xml

 

 

5.测试是否可以用 

EmployeeTest\DepartmentTest 

  •  Employee:
  • findByEid 

 ​​​

  •  findAll

  •  add\update
  •  delete

  •  Department:
  • findByDid\selectAll
  • add\update
  •  delete


、多条件查询

1、分别增加查询方法

1)EmployeeDao


    /**
     * 多条件查询
     * @param name 员工姓名
     * @param sex 员工性别
     * @return 员工对象集合
     */
    public List<Employee> queryList(String name,char sex);

    /**
     * 多条件查询2
     * @param name 姓名
     * @param sex 性别
     * @return 员工对象集合
     */
    public List<Employee> queryList2(@Param("name") String name, @Param("sex") char sex);

    /**
     * 多条件查询
     * @param map 查询参数集合
     * @return 员工对象集合
     */
    public List<Employee> queryList3(Map map);

    /**
     * 模糊查询
     */
    public List<Employee> queryByIf(Employee emp);

2)Employee Mapper.xml

<!-- #{}默认采用预处理方式去处理Sql语句 -->   

 <!-- ${}默认采用 非预处理方式去处理数据 -->

#和$的区别

1、#和$两者含义不同 #会把传入的数据都当成一个字符串来处理,会在传入的数据上面加一个双引号来处理。 而$则是把传入的数据直接显示在sql语句中,不会添加双引号。

2、两者的实现方式不同

(1)$作用相等于是字符串拼接 相当于使用StringBuffer的append方法将${username}$追加在 select username,password from t_login where username=后面,拼接在一起。

(2)#作用相当于变量值替换 相当于使用PreparedStement接口来对#{username}#来进行赋值操作。

3、#和$使用场景不同

(1)在sql语句中,如果要接收传递过来的变量的值的话,必须使用#。因为使用#是通过PreparedStement接口来操作,可以防止sql注入,并且在多次执行sql语句时可以提高效率。 (2)$只是简单的字符串拼接而已,所以要特别小心sql注入问题。对于sql语句中非变量部分,那就可以使用$,比如$方式一般用于传入数据库对象(如传入表名)。

  <!--属性查询-->
    <select id="queryList" resultType="com.etc.bean.Employee">
        select * from employee where ename like '${param1}%' and esex = #{param2}
    </select>
   <!--使用起别名的方式完成-->
    <select id="queryList2" resultType="com.etc.bean.Employee">
        select * from employee where ename like '%${name}%'and esex = #{sex}
    </select>
    <!-- 使用Map容器传参-->
    <select id="queryList3" resultType="com.etc.bean.Employee">
         select * from employee where ename like '%${userName}%'and esex = #{userSex}
    </select>

    <select id="queryByIf" resultType="com.etc.bean.Employee">
        select * from employee where 1=1
        <if test="eName!=null">
          and ename like '${eName}%'
        </if>
    </select>

3)Test

@Test
    public void queryList(){
     List<Employee> list = employeeDao.queryList("李",'女');
        for (Employee employee:list) {
            System.out.println(employee);
        }
    }
    @Test
    public void queryList2(){
        List<Employee> list = employeeDao.queryList2("小",'男');
        for (Employee employee:list) {
            System.out.println(employee);
        }
    }
    @Test
    public void queryList3(){
        Map<String,String> map = new HashMap<>();
        map.put("userName","李");
        map.put("userSex","男");
        List<Employee> list = employeeDao.queryList3(map);
        for (Employee employee:list) {
            System.out.println(employee);
        }
    }
    @Test
    public void queryByIf(){
     Employee employee = new Employee();
     employee.seteName("李");
     List<Employee> list = employeeDao.queryByIf(employee);
        for (Employee emp:list) {
            System.out.println(emp);
        }
    }

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文含有隐藏内容,请 开通VIP 后查看