mybatis的使用

mybatis简介

mybatis是一个ORM(Object Relation Mapping)框架,编写程序的时候,以面向对象的方式处理数据保存数据的时候,却以关系型数据库的方式存储,它可以 简化 J D B C 的操作 \color{#FF0000}{简化JDBC 的操作} 简化JDBC的操作,让开发者只需要关注 SQL 语句本身,而不用处理繁琐的数据库连接、参数设置和结果集获取等过程。mybatis 支持自定义 SQL、存储过程和高级映射,可以通过 XML 或注解来配置和映射 Java 对象和数据库记录。

mybatis 的优点是:

简单易学:mybatis 很小且简单,没有任何第三方依赖,安装和使用都很方便。
灵活:mybatis 不会对应用程序或数据库的现有设计造成任何影响,可以灵活地适应各种场景和需求。
解耦:mybatis 通过提供 DAO 层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易测试。
动态:mybatis 提供了 XML 标签和动态 SQL 语言,支持编写动态 SQL,可以根据不同的条件生成不同的 SQL 语句。

mybatis的使用

首先需要在web项目下添加mybatis的依赖(jar包),如图
在这里插入图片描述
再在src目录下添加两个文件(File),database.propertismybatis-config.xml
在这里插入图片描述
database.propertis 是数据库配置文件

# Database driver 驱动
driver=com.mysql.cj.jdbc.Driver
# Database connection URL   连接链接
url=jdbc:mysql://localhost:3306/[数据库名]?serverTimezone=GMT-8&useSSL=false
# Database username 用户名
username=root
# Database password 密码
password=root

mybatis-config.xml 是mybatis核心配置文件,事务管理器现在先不用

<?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>
    <!--引入配置文件-->
    <properties resource="database.properties"/>
    <!--环境配置-->
    <environments default="aaa">
        <!--第一个环境-->
        <environment id="aaa">
            <!--配置事务管理器-->
            <transactionManager type="JDBC">
			
            </transactionManager>
            <!--配置具体数据源,POOLED是mybatis自带的一种数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--注册所有映射文件-->
    <mappers>
        <mapper resource="dao/StudentDao.xml"/>
    </mappers>
</configuration>

然后创建好其它必要的文件
在这里插入图片描述
StudentDao 接口和 jdbc 中的接口一样

public interface StudentDao {
    List<Student> getAll();
}

Student类和MyClass类

//省略构造和getter setter
public class Student implements Serializable {
    private static final long serialVersionUID = -33052211675788318L;
    private int sid;
    private String sname;
    private int sage;
    private String sgender;
    private MyClass sclass;
}
public class MyClass {
    private int cid;
    private String cname;
    private School school;
}

StudentDao.xml 是和 StudentDao 对应的映射文件,要使用什么sql语句就使用对应的标签就可以了,属性id是接口中对应的方法名,resultType是返回值的类型,这里手动映射换成了resultMap

<?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="dao.StudentDao">
	<!--由于Student的班级属性是其他的类,这里需要手动映射查询结果各列和实体属性之间的关系-->
    <resultMap id="student_all" type="entity.Student">
        <id property="sid" column="sid"/>
        <result property="sname" column="sname"/>
        <result property="sage" column="sage"/>
        <result property="sgender" column="sgender"/>
        <association property="sclass" javaType="entity.MyClass">	
            <id property="cid" column="cid"/>		//这个查询语句只能查出cid,所以不写cname
        </association>
    </resultMap>

    <select id="getAll" resultMap="student_all">
        SELECT *
        FROM student
    </select>
</mapper>    

运行测试

public class Test {
    public static void main(String[] args) {
        //1·读取mybatis核心配置文件
        String resource = "mybatis-config.xml";
        //2·获取对mybatis.config.xml的输入流
        try {
            InputStream is = Resources.getResourceAsStream(resource);
            //3·使用输入流来创建SqlSessionFactoryBuilder
            //然后再构建出SqlSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //4·根据factory生成会话
            SqlSession session = factory.openSession();
            //5·只要有了会话,就能调用所有的增删改查了
            StudentDao sd = session.getMapper(dao.StudentDao.class);
            List<Student> list = sd.getAll();
            for (Student student :
                    list) {
                System.out.println(student.getSname()+" "+student.getSclass());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
//        控制台输出:
//        张无忌 entity.MyClass@5d20e46
//        杨过 entity.MyClass@709ba3fb
//        小龙女 entity.MyClass@3d36e4cd
//        郭芙蓉 entity.MyClass@6a472554
//        黄蓉 entity.MyClass@7ff2a664
//        令狐冲 entity.MyClass@525b461a
//        岳灵珊 entity.MyClass@58c1c010
//        杨康 entity.MyClass@b7f23d9
//        林青霞 entity.MyClass@61d47554
//        虚竹 entity.MyClass@69b794e2
//        李莫愁 entity.MyClass@3f200884
//        段誉 entity.MyClass@4d339552
//        王语嫣 entity.MyClass@f0f2775
//        杨铁心 entity.MyClass@5a4aa2f2
//        程英 entity.MyClass@6591f517
//        石破天 entity.MyClass@345965f2
//        公孙绿萼 entity.MyClass@429bd883
//        韦小宝 entity.MyClass@4d49af10
//        阿紫 entity.MyClass@279ad2e3
//        胡斐 entity.MyClass@58134517
	}
}	

查多表也是一样的流程,做好映射、mybatis就会自行实现jdbc的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值