MyBatis-02-mybatis的增删改查

测试环境

1. JDK 1.8
2. IntelliJ IDEA 2020.1.2 x64
3. Navicat Premium 16

使用MyBatis构建项目

1. 加入jar

2. 配置文件 设置数据源 数据库连接池

一定要更换为自己数据库名和密码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 环境   default=development   使用的默认的环境的id是development-->
    <!--  打印日志 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <!-- 事务管理器-->
            <transactionManager type="JDBC"/>
            <!-- 数据源   type =pooled -->
            <dataSource type="POOLED">
                <!-- basedb  driver mysql8的jar 必须是加cj-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!-- mysql8的时候一定要加时区不加的话 时间会错8个小时   2024-5-28 10:53:00 -->
                <property name="url" value="jdbc:mysql://localhost:3306/sanqi?useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
                <!-- 连接数据库的名字-->
                <property name="username" value="root"/>
                <!--                 连接数据库的密码-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

 3. 创建Mapper.xml文件

MyBatis是"半自动"的ORM框架,即SQL语句需要开发者自定义,MyBatis的关注点在pojq(java对象)和SQL之间的映射关系。那么简单来说,Mapper文件其实就是主要用来存放SQL语句的。

 文件内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 命名空间 接口-->
<mapper namespace="org.example.dao.IEmpMapper">一定要写自己的接口路径
</mapper>

4. dao接口

名字IEmpMapper

Emp是我的实体类名
/**
 * 查询所有的信息
 * select
 * 方法名字是   findAll
 * List<> Emp
 * @return
 */
List<Emp> findAll(Integer page);
/**
 * 添加
 */
int addEmp(Emp emp);
/**
 * 修改
 */
int updateEmp(Emp emp);

/**
 * 删除
 */
int deleteEmp(Emp emp);
/**
 * 添加之后返回自动整张的主键
 */

int addEmp2(Emp emp);

5. 将Mapper文件注入项目 

在Mapper的核心的配置文件</environments>下加入

    <mappers>
<!--        <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
    <!--    mapper  文件   写出来    -->
        <mapper resource="mapper/EmpMapper.xml"></mapper>
    </mappers>

6. 测试

读取配置文件

构建sqlsessionFactory

SqlSession

获取Mapper文件

执行SQl

public static void main(String[] args) throws IOException {
        // SqlsessionFactory
        // 持久层  连接数据库
        // mybatis.xml
        // 读取mybatis。xml
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        // 构建了一个SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = factory.openSession();
        //

        IEmpMapper mapper = sqlSession.getMapper(IEmpMapper.class);
        List<Emp> all = mapper.findAll();

        System.out.println("all = " + all);


    }

7.增删改查方法

关键词: 增 <insert> 删<delete> 改<update> 查<select>

SQL 代码中是不区分大小写的,大写或小写都可以
    <!-- id 代表的是方法的名字-->
    <!-- List<Emp>-->
    <!-- 当实体类的属性名和列名保持一致的时候 返回值可以使用resultType=“泛型的包名加类名 Emp” -->
    <!-- sql语句结尾一定不能写;!!!!!!!!!!!!!!!!!!!!!!!!!1-->

7.1 新增

dao接口上边已经有了 直接编写mapper文件 注意一定要写入<mapper>标签里面

 <!--参数是一个实体类  使用实体类中的属性名的时候直接使用  #{实体类中的属性名}     -->
    <insert id="addEmp" parameterType="org.example.entity.Emp">
        insert into emp(ename,status,createtime,deptno,pwd)
        values(#{ename},#{status},#{createtime},#{deptno},#{pwd})
    </insert>

注意事项:

取值时候使用的是#{}

取的是实体类中的属性的值  #{实体类的属性}

测试:

public static void main(String[] args) throws IOException {
        // SqlsessionFactory
        // 持久层  连接数据库
        // mybatis.xml
        // 读取mybatis。xml
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        // 构建了一个SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = factory.openSession();
        //

        IEmpMapper mapper = sqlSession.getMapper(IEmpMapper.class);
//        List<Emp> all = mapper.findAll(1);

//        System.out.println("all = " + all);
        Emp emp = new Emp();
        emp.setEname("testA369000");
        emp.setPwd("78787878");
        emp.setDeptno(1);
        emp.setStatus(1);
        emp.setCreatetime(new Date());
        mapper.addEmp(emp);
        // 添加  修改  删除   手动提交事务
        // 数据库设置的是自动提交    mybatis 手动提交  自己提交事务
        // 提交事务

        sqlSession.commit();// 提交事务
        // 关闭连接
        sqlSession.close();

    }

注意:添加修改删除的时候必须手动的提交事务

7.2 删除 

编写mapper文件 注意一定要写入<mapper>标签里面

<delete id="deleteEmp">
        delete from emp where empno=#{empno}
    </delete>

test代码 delete是方法名 需要调用

public static void main(String[] args) {
        delete();
    }
public static void delete(){
        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        IEmpMapper mapper = sqlSession.getMapper(IEmpMapper.class);
        Emp emp = new Emp();
        emp.setEmpno(9);
        mapper.addEmp(emp);
        sqlSession.commit();
        sqlSession.close();
    }

7.3 修改 

编写mapper文件 注意一定要写入<mapper>标签里面

    <update id="updateEmp">
        update emp set ename=#{ename} where empno=#{empno}
    </update>

test代码 update是方法名 需要调用

    public static void main(String[] args) {
        update();
    }
    public static void update(){
        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        IEmpMapper mapper = sqlSession.getMapper(IEmpMapper.class);
        Emp emp = new Emp();
        emp.setEname("呜呜");
        emp.setEmpno(3);
        mapper.updateEmp(emp);
        sqlSession.commit();
        sqlSession.close();
    }

7.4 查询 

编写mapper文件 注意一定要写入<mapper>标签里面

    <select id="findAll"  resultType="org.example.entity.Emp" >
        select * from emp
    </select>

test代码 findAll是方法名 需要调用

public static void main(String[] args) {
        findAll();
}
public static void findAll(){
        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        IEmpMapper mapper = sqlSession.getMapper(IEmpMapper.class);
        List<Emp> findAll = mapper.findAll();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值