Mybatis 框架

 Mybatis 框架

MyBatis 是一款优秀的==持久层框架==,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射实体类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

持久层: 与数据库交互的一层.[用于操作数据表记录的]

框架: 别人写好的一个半成品。我们只需要加入自己的配置以及代码。

ORM框架: Object Relative Mapping(对象关系映射)。 表---实体类 一条记录--实体类的对象

表的字段---java实体类的属性

 mybatis 的使用

 为什么要用 mybatis

mybatis 下面都帮你完成

如何使用 mybatis

  1. 创建一个普通的 maven 工程

  1. 引入依赖
<!--        mysql 依赖-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.33</version>
</dependency>
<!--        Mybatis 依赖-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.14</version>
</dependency>

<!--        junit依赖-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13.2</version>
  <scope>test</scope>
</dependency>
<!--        lombok-->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.28</version>
</dependency>
  1. 编写 mybatis.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="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <!--name是固定的 value根据需要配置为自己的内容-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
</configuration>
  1. 配置映射文件(里面写自己的 sql 语句)
<?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">
<!--namespace:命名空间 现在可以随便起名

-->
<mapper namespace="aaa">
     <!--select:用于编写查询的sql语句
            id:唯一标签 现在可以随便起名
            resultType:结果类型 sql执行完毕后返回对应的java实体类的类型 把查询的结果自动封装到该实体类的属性上
     -->
    <select id="getById" resultType="com.ykq.entity.User">
        select * from user where id=#{id}
    </select>
</mapper>
  1. 把映射文件放入配置文件中

  1. 测试
@Test
    public void test01() throws Exception{
        //1. 读取mybatis的配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        //2. 获取SqlSessionFactory对象---创建sqlSession的对象
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
        //3. 获取SqlSession对象---表示java与数据库的一次连接
        SqlSession sqlSession=sessionFactory.openSession();
        //4. 执行sql语句
        //String statement, 执行映射文件中的哪个标签
        // Object parameter 需要的参数值
        User user= sqlSession.selectOne("aaa.getById",1);
        System.out.println(user);
    }

mybatis完成crud操作

<?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">
<!--namespace:命名空间 现在可以随便起名

-->
<mapper namespace="aaa">
     <!--select:用于编写查询的sql语句
            id:唯一标签 现在可以随便起名
            resultType:结果类型 sql执行完毕后返回对应的java实体类的类型 把查询的结果自动封装到该实体类的属性上
     -->
    <select id="getById" resultType="com.ykq.entity.User">
        select * from user where id=#{a}
    </select>

    <!--删除-->
    <delete id="deleteById">
         delete from user where id=#{id}
    </delete>

    <!--添加 #{名称}必须和实体类属性名一致-->
    <insert id="addUser">
         insert into user(name,age,head,email) values(#{name},#{age},#{head},#{email})
    </insert>

    <!--修改: #{名称} 必须和实体类一致-->
    <update id="update">
        update user set name=#{name},age=#{age},email=#{email},head=#{head} where id=#{id}
    </update>

</mapper>
@Test
    public void testDelete() throws Exception{
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        int row = sqlSession.delete("aaa.deleteById", 1);
        System.out.println("影响了:"+row);
        //增删改操作时必须提交。
        sqlSession.commit();
    }

    @Test
    public void testAdd() throws Exception{
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        User user=new User(null,"关文琪",18,"150@qq.com","2.jpg");
        sqlSession.insert("aaa.addUser",user);
//        //增删改操作时必须提交。
        sqlSession.commit();
    }

    @Test
    public void testUpdate() throws Exception{
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        User user=new User(45,"岳科旭",18,"150@qq.com","2.jpg");
        sqlSession.update("aaa.update",user);
//        //增删改操作时必须提交。
        sqlSession.commit();
    }

mybatis 企业模式开发

上面我们操作数据库表记录都是使用的SqlSession类中的方法,而实际开发中我们习惯自己写方法,调用自己的方法传递相应的参数。但是这些方法没有方法体{}. 而方法的实现交于mybatis框架完成。 [按照你写的sql完成相应的实现]

  1. 创建一个接口
public interface UserDao {

    //根据id查询用户信息
    public User queryById(int id);
}
  1. 映射文件
<?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">
<!--namespace:命名空间 现在可以随便起名
必须和接口名一致

-->
<mapper namespace="com.aaa.dao.UserDao">

  <!--
  id:必须和Dao接口中的方法名一致
  resultType
  -->
  <select id="queryById" resultType="com.aaa.entity.User">
    select * from user where id=#{id}
  </select>
</mapper>
  1. 测试

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值