mybatis in查询怎么写_SSM系列之MyBatis——入门

然后就是有高中的小伙伴高考加油

万物皆框架的年代,对数据库的操作框架当然是我们必须要学的东西,我想之前用JDBC有点头疼吧,可能也使用过什么JDBCTempalte吧,有一说一,比原生的JDBC好用太多了。但是现在,来试试MyBatis,欲罢不能框架(其实还是有点繁琐)由于官网有中文的文档,所以我可能不会写太多的笔记哦。

0735a6aa17411cc497f2ade81961b35e.png

61c05e57659e68cfe1dd519b849c1442.png

简介

93b2978eab603f75c28fe74fa8861b5c.png

什么是 MyBatis?

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

现在持久化的框架(ORM):

国内而言比较流行的就是MyBatis和Spring Data这两个了,前者占据上风。

先来说说这个原生JDBC 这个东西的问题:

  1. 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。 

  2. Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java 代码。

  3. 使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能 多也可能少,修改 sql 还要修改代码,系统不易维护。

  4. 对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记 录封装成 pojo 对象解析比较方便。

快速开发搭建环境

93b2978eab603f75c28fe74fa8861b5c.png

老的三步走(导包,配置,测试)

导包:(Maven方式,见了鬼了,我之前用的全是手动导入)

<dependencies>    <dependency>              <groupId>org.mybatisgroupId>              <artifactId>mybatisartifactId>              <version>3.4.5version>        dependency>        <dependency>         <groupId>junitgroupId>              <artifactId>junitartifactId>              <version>4.12version>              <scope>testscope>        dependency>        <dependency>         <groupId>mysqlgroupId>              <artifactId>mysql-connector-javaartifactId>              <version>5.1.47version>              <scope>runtimescope>        dependency>        <dependency>              <groupId>log4jgroupId>              <artifactId>log4jartifactId>              <version>1.2.12version>        dependency>   dependencies> 

我们需要一个实体类:(对应数据库的表,数据库表我就不贴图了)

public class User implements Serializable {      private Integer id;      private String username;      private Date birthday;      private String sex;      private String address;         //setter和getter方法就不写了,还有一个toString}

编写一个持久层的接口:

public interface IUserDao {    /**   * 查询所有用户     * @return     */    List findAll(); }

注意:不再需要编写实现类,由一个配置文件充当这个实现类!!!

写配置

编写一个配置文件,名字需要为:(IUserDao.xml)接口名.xml

这里有一个需要注意的地方:创建的位置必须需要和接口在同一个包中

这里有两种方式:

  1.  将这个文件直接放在接口的包下

  2. 在资源文件在创建和接口一样的包以及层次接口

如下:

78968528a60d432b8cae0006d58cba91.png

配置文件的内容

<?xml version="1.0" encoding="UTF-8"?>  <mapper namespace="com.itheima.dao.IUserDao">             <select id="findAll" resultType="com.domain.User">       select * from user      select> mapper> 

我们还需要一个主配置文件:(定义mybatis这个东西怎么跑)和一个日志文件

<?xml version="1.0" encoding="UTF-8"?> /span>     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"          "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>                 <environments default="mysql">                            <environment id="mysql">                                      <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="数据库账号"/>                    <property name="password" value="连接密码"/>                   dataSource>              environment>         environments>                   <mappers>                                                <mapper resource="com/dao/IUserDao.xml"/>         mappers> configuration>

配置文件如下:(名字为log4j.xml)

<?xml version="1.0" encoding="UTF-8" ?>  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">   <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">   <param name="Encoding" value="UTF-8" />   <layout class="org.apache.log4j.PatternLayout">    <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />   layout> appender> <logger name="java.sql">   <level value="debug" /> logger> <logger name="org.apache.ibatis">   <level value="info" /> logger> <root>   <level value="debug" />   <appender-ref ref="STDOUT" /> root>log4j:configuration>

最后一步:(测试)

public class MybatisTest {        public static void main(String[] args)throws Exception {           //1.读取配置文件             InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");             //2.创建 SqlSessionFactory 的构建者对象             SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();             //3.使用构建者创建工厂对象 SqlSessionFactory             SqlSessionFactory factory = builder.build(in);           //4.使用 SqlSessionFactory 生产 SqlSession 对象             SqlSession session = factory.openSession();           //5.使用 SqlSession 创建 dao 接口的代理对象             IUserDao userDao = session.getMapper(IUserDao.class);             //6.使用代理对象执行查询所有方法             List users = userDao.findAll();             for(User user : users) {                  System.out.println(user);             }           //7.释放资源             session.close();             in.close();      }  }

就这样一个基本的操作就完成了(可参考官网的配置),其中的什么配置啊,代码后续再详细讲解哦!

dfef95f4a41728eeb8bc56e6ee6ec46e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值