首页 > 其他分享 >关于mybatis

关于mybatis

时间:2024-09-08 15:39:46浏览次数:8  
标签:jdbc pageSize startIndex 关于 mybatis teacher select user

1、junit方法  @Test @Before @After

2、数据类型与别名

 3、参数定义方法:

  #{name} 直接表示对象的属性名,只有一个参数的时候 #{} 内的名称随便写。

  '%${name}%'  模糊查询拼接字符串

<select id="findByUsernameLike"
parameterType="string"
resultType="com.itbaizhan.pojo.User">
   select * from user where username like
'%${value}%'
</select>

模糊查询的推荐写法,使用bind标签

<select id="findByUsernameLike"
parameterType="string"
resultType="com.itbaizhan.pojo.User">
    <bind name="likeName"
value="'%'+username+'%'"/>
   select * from user where username like #
{likeName}
</select>

4、多参书写方式,

注解方式

List<User> findPage1(@Param("startIndex")
int startIndex, @Param("pageSize")int
pageSize);
<select id="findPage1"
resultType="com.itbaizhan.mapper.User">
 select * from user limit #{startIndex},#
{pageSize}
</select>

Map传参

 

List<User> findPage3(Map<String,Object>
params);

 

<select id="findPage3"
resultType="com.itbaizhan.pojo.User"
parameterType="map">
   select * from user limit #
{startIndex},#{pageSize}
</select>
@Test
public void testFindPage3(){
    Map<String,Object> params = new
HashMap();
    params.put("startIndex",0);
    params.put("pageSize",4);
    List<User> users =
userMapper.findPage3(params);
    users.forEach(System.out::println);
}

5、主键回填

void add(User user);
<insert id="add"
parameterType="com.itbaizhan.user.User">
    <!-- keyProperty:主键属性名,keyColumn:主
键列名,resultType:主键类型,order:执行时机 -->
    <selectKey keyProperty="id"
keyColumn="id" resultType="int"
order="AFTER">
       SELECT LAST_INSERT_ID();
    </selectKey>
   insert into
user(username,birthday,sex,address)
values(#{username},#{birthday},#{sex},#
{address})
</insert>

<!-- SELECT LAST_INSERT_ID():查询刚刚插入的记录的主键
值,只适用于自增主键,且必须和insert语句一起执行。-->
@Test
public void testAdd(){
    User user = new User("尚学堂", new
Date(), "男", "北京");
    userMapper.add(user);
    session.commit();
    System.out.println(user.getId());
}

6、正确配置数据库连接的方法

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybat
is
jdbc.username=root
jdbc.password=root
在配置文件中引入db.properties
<properties resource="db.properties">
</properties>
<environments default="mysql">
    <environment id="mysql">
        <transactionManager type="JDBC">
     </transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </dataSource>
    </environment>
 </environments>

7、类别名

<!-- mybatis配置文件 -->
<typeAliases>
     <typeAlias 
    type="com.itbaizhan.pojo.User"
    alias="User"> 
    </typeAlias>
</typeAliases>

映射文件

<select id="findAll" resultType="User">
   select * from user
</select>
为一个所有包下的所有类配置别名 
<typeAliases>
    <package name="com.itbaizhan.pojo">
</package>
</typeAliases>

8、 <mappers> 用于注册映射文件或持久层接口

<!-- 注册一个包下的所有持久层接口 -->
<mappers>
    <package name="com.itbaizhan.mapper"/>
</mappers

9、返回属性与对象名不一致时

   resultMap

<!-- id:自定义映射名 type:自定义映射的对象类型
  -->
<resultMap id="teacherMapper"
type="com.itbaizhan.pojo.Teacher">
    <!-- id定义主键列 property:POJO属性名
column:数据库列名 -->
    <id property="id" column="tid"></id>
    <!-- result定义普通列 property:POJO属性
名 column:数据库列名 -->
    <result property="teacherName"
column="tname"></result>
</resultMap>

<select id="findAll"
resultMap="teacherMapper">
   select * from teacher
</select>

sql语句as

<select id="findAll"
resultType="com.itbaizhan.pojo.Teacher">
   select tid as id,tname as teacherName
from teacher;
</select>

 10、复用sql方法

<sql id="selectAllField">
   select tid as id,tname as teacherName
</sql>
<select id="findAll"
resultType="com.itbaizhan.pojo.Teacher">
    <include refid="selectAllField"> </include>
   from teacher;
</select>
<select id="findById"
resultType="com.itbaizhan.pojo.Teacher">
    <include refid="selectAllField"></include>
   from teacher where tid = #{id}
</select>

11、MyBatis映射文件_特殊字符处理

<select id="findById2"
resultType="com.itbaizhan.pojo.Teacher">
    <include refid="selectAllField">
</include>
   from teacher where tid &gt; #{id}
</select>

 

 

标签:jdbc,pageSize,startIndex,关于,mybatis,teacher,select,user
From: https://www.cnblogs.com/Mvloveyouforever/p/18402896

相关文章

  • 问:关于内部类,知道这些就够了~
    内部类是一种强大的特性,允许我们在一个类的定义中嵌套另一个类的定义。内部类提供了更好的封装性,可以将逻辑上相关的类组织在一起,并且可以直接访问外部类的成员。一、成员内部类成员内部类是定义在外部类中的非静态类。作为外部类的一个成员,它可以无条件地访问外部类的所......
  • [Spring]MyBatis的执行原理
    MyBatis的执行原理详细介绍为了使大家能够更加清晰的理解MyBatis程序,在正式讲解MyBatis入门案例之前,先来了解一下MyBatis程序的工作原理,如图1所示。MyBatis的工作原理从图1可以看出,MyBatis框架在操作数据库时,大体经过了8个步骤。下面就对图1中的每一步流程进行详细讲解,具体如......
  • 关于CPP——Muduo库的使用
    目录 一、Moduo库是什么1.1Moduo库概念1.2Reactor模式 1.3Moduo库的原理二、Muduo库常见接口2.1 TcpServer类2.2 EventLoop类2.3 TcpConnection类 2.4 TcpClient类2.5 Buffer类 2.6 CountDownLatch类2.7 EventLoopThread类1.防止主线程阻......
  • 关于企业管理系统--MES系统和ERP系统
    对于一些制造业公司,对于生产车间和劳动力的管理需要系统化的管理制度和指标,并且在计算机系统上需要相关的一个集中式管理以及生产体系架构,MES系统和ERP系统旨在面向制造业企业车间的执行层和企业的资源进行一个统合管理,以提高企业的运营效率和管理水平一、MES系统1.1、什么是MES系......
  • mybatis事务详解
    对于数据库事务,我们都不陌生,数据库的事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,也是一个不可分割的工作单位。它包含一个或多个SQL语句,这些语句要么全部执行,要么全部不执行。事务是一个原子操作单元,其对数据的修改要么全都执行,要么全都不执行。那么我们就得来看看这......
  • 11. MyBatis的一级缓存和二级缓存有什么区别?如何配置和使用二级缓存?
    在MyBatis中,缓存机制用于减少数据库访问次数,提高应用程序性能。MyBatis提供了两级缓存:一级缓存和二级缓存。1.一级缓存(LocalCache)作用范围:一级缓存作用于SqlSession级别。即在同一个SqlSession中执行相同的SQL查询,如果查询参数相同,MyBatis会从缓存中直接返回......
  • 13. 说说 MyBatis 的缓存机制?
    MyBatis提供了一级缓存和二级缓存两种缓存机制,用于提高应用程序的性能,减少数据库的访问次数。缓存机制是MyBatis的一个重要特性,通过缓存可以在一定程度上减少对数据库的访问,从而提高查询性能。1.一级缓存(LocalCache)作用范围:一级缓存是MyBatis默认开启的缓存机制,作用......
  • 关于ST-CNN的算法详解
    ST-CNN(时空卷积神经网络)是一种结合了时间和空间维度信息处理的深度学习模型,它在多个领域,如交通流量预测、视频分析、动作识别等中都有广泛应用。以下是对ST-CNN算法的详细解析:一、基本概念ST-CNN通过结合卷积神经网络(CNN)和图卷积网络(GCN)的优势,能够同时捕捉数据的空间和时间特......
  • 关于卷积神经网络(CNN)的详解
    一、基本概念卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks,FNN),是深度学习的代表算法之一。它仿造生物的视觉机制构建,能够进行监督学习和非监督学习,广泛应用于图像识别、视频分析、自然语言处......
  • springboot+vue+mybatis河北经贸大学勤工助学系统+PPT+论文+讲解+售后
    河北经贸大学勤工助学系统是学校中重要的一环,勤工助学是教师、学生获取信息的主要渠道。于是经过考虑之后决定开发基于JSP技术设计与实现了一款简洁、轻便的河北经贸大学勤工助学系统。本系统解决了考勤的主要问题,包括以下多个功能模块:学生、教师、教师考勤、岗位类型、岗位......