(一)Mybatis框架快速入门(&注解开发)---实现增删改查

持久层框架-Mybatis,封装了jdbc的细节,使开发者只需要关注sql语句,无需关注如注册驱动,创建链接等复杂而重复的过程。它使用ORM(对象关系映射)的思想,将数据库表的名称与实体类对应,数据库表中的字段与实体类的属性一一对应。

一、Mybatis快速入门

1.建表sql语句
create table user(
username varchar(30),
password varchar(40),
age int,
sex varchar(10)
)
2.创建User对象
package com.domain;
public class User {
    private String username;
    private String password;
    private Integer age;
    private String sex;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "姓名:"+username+
                " 密码:"+password+
                " 年龄:"+age+
                " 性别:"+sex;
    }
}

3.Mybatis的环境配置
(在pom.xml中配置)

在这里插入图片描述

4.Mapper文件的配置
(在resource包下新建Mapper包,在Mapper包下新建UserMapper.xml)
  • 在写sql语句时,以前用的占位符 ?,需要用#{ }替代;
  • resultType 返回的类型 ;parameterType 参数类型;
  • 当参数类型为对象时,#{ }中应该写入对象的某个属性
  • 当参数类型为基本类型时,#{ }中可以写入任意值
<!--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="UserMapper">
    <!--查询所有-->
    <select id="findAll" resultType="com.domain.User">
        SELECT * FROM user
    </select>
    <!--查询单个用户-->
    <select id="login" resultType="com.domain.User" parameterType="com.domain.User">
        SELECT * FROM user WHERE username = #{username} AND password = #{password}
    </select>
    <!--增加用户-->
    <insert id="add" parameterType="com.domain.User">
        INSERT INTO user VALUES (#{username},#{password},#{age},#{sex})
    </insert>
    <!--修改用户信息-->
    <update id="update" parameterType="com.domain.User">
        UPDATE user SET password = #{password} WHERE username = #{username}
    </update>
    <!--删除用户 单个参数时,#{}中的参数可以是任意的-->
    <delete id="delete" parameterType="java.lang.String">
        DELETE FROM user WHERE username = #{aaa}
    </delete>

</mapper>
5.Mybatis的核心配置文件
(在resource包下新建SqlMapConfig.xml)
<!--SqlMapConfig.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>
    <environments default="mysql">
        <!--配置MySQL环境 -->
        <environment id="mysql">
            <!--配置事务管理的类型为jdbc -->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://localhost:3306/student"></property>
                <property name="username" value="root"></property>
                <property name="password" value="123456"></property>
            </dataSource>
        </environment>
    </environments>
    <!--指定映射配置文件的位置 -->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>

6.测试CURD操作
package com;
import com.domain.User;
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 org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class TestMybatis {
    //1.查询所有的用户
    @Test
    public void test1() throws Exception{
        //读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SQLSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(resourceAsStream);//构建者模式
        //使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();//工厂模式
        //执行sql语句
        List<User> userList = session.selectList("UserMapper.findAll");
        //打印结果
        for (User user : userList) {
            System.out.println(user);
        }
        //释放资源
        session.close();
    }

    //2.查询单个用户
    @Test
    public void test2() throws Exception{
        //读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SQLSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(resourceAsStream);//构建者模式
        //使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();//工厂模式
        //执行sql语句
        User user = new User();
        user.setUsername("Huicoder");
        user.setPassword("Huicoder");
        User u = session.selectOne("UserMapper.login", user);
        //打印结果
        System.out.println(u);
        //释放资源
        session.close();
    }

    //3.添加用户
    @Test
    public void test3() throws Exception{
        //读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SQLSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(resourceAsStream);//构建者模式
        //使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();//工厂模式
        //执行sql语句
        User user = new User();
        user.setUsername("aaa");
        user.setPassword("aaa");
        user.setAge(23);
        user.setSex("女");
        int result = session.insert("UserMapper.add", user);
        //需要手动提交事务
        session.commit();
        //打印结果
        if (result > 0){
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失败!");
        }
        //释放资源
        session.close();
    }

    //5.根据用户名删除用户
    @Test
    public void test5() throws Exception{
        //读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SQLSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(resourceAsStream);//构建者模式
        //使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();//工厂模式
        //执行sql语句
        int result = session.delete("UserMapper.delete", "Huicoder");
        //需要手动提交事务
        session.commit();
        //打印结果
        if (result > 0){
            System.out.println("删除成功!");
        }else {
            System.out.println("删除失败!");
        }
        //释放资源
        session.close();
    }

    //4.修改用户密码
    @Test
    public void test4() throws Exception{
        //读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SQLSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(resourceAsStream);//构建者模式
        //使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();//工厂模式
        //执行sql语句
        User user = new User();
        user.setUsername("xie");
        user.setPassword("1999");
        int result = session.update("UserMapper.update", user);
        //需要手动提交事务
        session.commit();
        //打印结果
        if (result > 0){
            System.out.println("修改成功!");
        }else {
            System.out.println("修改失败!");
        }
        //释放资源
        session.close();
    }

}

7.项目结构

在这里插入图片描述

二、Mybatis注解开发(不再需要UserMapper.xml文件)

  • 常用注解:@Insert(实现插入),@Update(实现更新),@Delete(实现删除),@Select(实现查询);
1.删除上述结构中的UserMapper.xml文件
2.修改SqlMapConfig.xml文件如下
  <!-- 加载映射关系 -->
    <mappers>
        <!--指定mapper接口所在的包-->
        <package name="com.mapper"></package>
    </mappers>
3.重新编写UserMapper.java接口
package com.mapper;

import com.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;


import java.io.IOException;
import java.util.List;

public interface UserMapper {

    @Insert("insert into user values(#{username},#{password},#{age},#{sex})")
    Integer save(User user);

    @Update("update user set password=#{password} where username=#{username}")
    Integer update(User user);

    @Delete("delete from user where username = #{username}")
    Integer delete(String username);

    @Select("select * from user")
    List<User> selectAll();

    
}

4.编写测试类进行测试
package com;
import com.domain.User;
import com.mapper.UserMapper;
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 org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class TestMybatis {
    private UserMapper userMapper;
    @Before
    public void before() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession session = sessionFactory.openSession(true);
        userMapper = session.getMapper(UserMapper.class);

    }

    @Test
    public void testSave(){
        User user  = new User();
        user.setUsername("Huicoder");
        user.setPassword("xxx");
        user.setAge(22);
        user.setSex("男");
        int result = userMapper.save(user);
        if (result>0){
            System.out.println("插入成功!!!");
        }
    }

    @Test
    public void testUpdate(){
        User user  = new User();
        user.setUsername("Huicoder");
        user.setPassword("hhh");

        int result = userMapper.update(user);
        if (result>0){
            System.out.println("修改成功!!!");
        }
    }

    @Test
    public void testDelete(){
        int result = userMapper.delete("Huicoder");
        if (result>0){
            System.out.println("删除成功!!!");
        }
    }

    @Test
    public void testSelect(){
        List<User> userList = userMapper.selectAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值