Mybatis——sql映射文件中的增删查改

发布于:2025-02-10 ⋅ 阅读:(27) ⋅ 点赞:(0)

映射文件内的增删查改

准备工作

  1. 准备一张数据表,用于进行数据库的相关操作。
  2. 新建maven工程, 导入mysql-connector-java和mybatis依赖。
  3. 新建一个实体类,类的字段要和数据表的数据对应
  4. 编写接口
  5. 编写mybatis主配置文件
public class User {
    private String name;
    private String gender;
    private int age;
    private String address;
    private String email;
    private String qq;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }
}
<?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"></transactionManager>

            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>

        </environment>
    </environments>
</configuration>
    public class Main {
        public static void main(String[] args) throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
            SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession();
        }
    }

        后续只需在接口内添加相关方法,编写mapper映射文件进行测试,后面仅展示mapper映射文件。

    新增数据

        插入数据的方法sqlSession.insert("mapper映射文件内insert标签的id","传入的参数"),并且例如增删改的方法需要调用commit方法进行提交。

        编写sql语句时,如果输入的参数为java对象类型,#{}表示接收java对象的属性名 

    <insert id="add" parameterType="com.cc.UserMapper" >
    insert into tb_userinfo (name,gender,age,address,email,qq) values (#{name},#{gender},#{age},#{address},#{email},#{qq});
    </insert>

    这里将user对象作为参数传入。 

            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
            SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession();
            //插入数据
            User user = new User("张四丰","女",25,"宁夏","1212@qq.com","987654");
            sqlSession.insert("add",user);
            sqlSession.commit();

    删除数据

    根据姓名删除数据:调用sqlSession.delete方法,同时传入一个字符串。

    sqlSession.delete("delete","张大2");

        <delete id="delete" parameterType="String">
            delete from tb_userinfo where name = #{na}
        </delete>

    修改数据

        当要传入多个参数时,除了使用类将数据封装起来,还能使用map集合作为参数传入,注意map的key值要和#{}内的值一致。

        <update id="update" parameterType="map">
            update tb_userinfo set gender=#{gender},address=#{address} where name=#{nam}
        </update>
            Map<String,String> map = new HashMap<>();
            map.put("gender","女");
            map.put("nam","李思思");
            map.put("address","四川");
            sqlSession.update("update",map);
    

    查询数据

    查询所有

        <select id="seleteAll" resultType="com.cc.User">
            select * from tb_userinfo;
        </select>
            List<User> users = sqlSession.selectList("seleteAll");
            for(User u : users){
                System.out.print(u.getName());
                System.out.println(u.getAge());
            }

    条件查询

        <select id="seleteByName" resultType="com.cc.User" parameterType="String">
            select * from tb_userinfo where name = #{name}
        </select>
            User user = sqlSession.selectOne("seleteByName", "李思思");
            System.out.println(user.getGender());
            System.out.println(user.getAddress());

    模糊查询

        <select id="seleteLike" resultType="com.cc.User" parameterType="String">
            select * from tb_userinfo where name like #{name}
        </select>
            User o = sqlSession.selectOne("seleteLike", "%大%");
            System.out.println(o.getName());

    映射文件的相关补充

    #{}与${}

        #{}与${}都能够接收输入的参数,区别是#{}表示一个占位符号,${}表示一个拼接符号,这样会导致sql注入,因此不建议使用${}

    parameterType和resultType

    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。

    resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。


    网站公告

    今日签到

    点亮在社区的每一天
    去签到