Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

文章目录

  • 前言
  • 一、核心配置文件详解
  • 二、默认的类型别名
  • 三、MyBatis的增删改查
  • 四、MyBatis获取参数值的两种方式
    • 1、单个字面量类型的参数
    • 2、多个字面量类型的参数
    • 3、map集合类型的参数
    • 4、实体类类型的参数
    • 5、使用@Param标识参数
  • 总结


前言

一、核心配置文件详解
二、默认的类型别名
三、MyBatis的增删改查
四、MyBatis获取参数值的两种方式
1、单个字面量类型的参数
2、多个字面量类型的参数
3、map集合类型的参数
4、实体类类型的参数
5、使用@Param标识参数


一、核心配置文件详解

核心配置文件中的标签必须按照固定的顺序(有的标签可以不写,但顺序一定不能乱):
properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers


DOCTYPE configuration
        PUBLIC "-//MyBatis.org//DTD Config 3.0//EN"
        "http://MyBatis.org/dtd/MyBatis-3-config.dtd">
<configuration>
    
    <properties resource="jdbc.properties">properties>
    <settings>
        
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        
        <setting name="lazyLoadingEnabled" value="true"/>
    settings>
    <typeAliases>
        
        
        
        
        <package name="com.atguigu.mybatis.bean"/>
    typeAliases>
    
    <environments default="mysql_test">
        
        <environment id="mysql_test">
            
            <transactionManager type="JDBC"/>
            
            <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>
    
    <mappers>
        
        
        <package name="com.atguigu.mybatis.mapper"/>
    mappers>
configuration>

二、默认的类型别名

Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式_第1张图片

三、MyBatis的增删改查

  1. 添加
    
    <insert id="insertUser">
    	insert into t_user values(null,'admin','123456',23,'男','[email protected]')
    insert>
    
  2. 删除
    
    <delete id="deleteUser">
        delete from t_user where id = 6
    delete>
    
  3. 修改
    
    <update id="updateUser">
        update t_user set username = '张三' where id = 5
    update>
    
  4. 查询一个实体类对象
      
    <select id="getUserById" resultType="com.atguigu.mybatis.bean.User">  
    	select * from t_user where id = 2  
    select>
    
  5. 查询集合
    
    <select id="getUserList" resultType="com.atguigu.mybatis.bean.User">
    	select * from t_user
    select>
    
  • 注意:
    1. 查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系
      • resultType:自动映射,用于属性名和表中字段名一致的情况
      • resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
    2. 当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

四、MyBatis获取参数值的两种方式

  • MyBatis获取参数值的两种方式:${}和#{}
  • ${}的本质就是字符串拼接,#{}的本质就是占位符赋值
  • ${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

1、单个字面量类型的参数

  • 若mapper接口中的方法参数为单个的字面量类型,此时可以使用${}和#{}以任意的名称(最好见名识意)获取参数的值,注意${}需要手动加单引号

<select id="getUserByUsername" resultType="User">
	select * from t_user where username = #{username}
select>

<select id="getUserByUsername" resultType="User">  
	select * from t_user where username = '${username}'  
select>

2、多个字面量类型的参数

  • 若mapper接口中的方法参数为多个时,此时MyBatis会自动将这些参数放在一个map集合中
    1. 以arg0,arg1…为键,以参数为值;
    2. 以param1,param2…为键,以参数为值;
  • 因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号。
  • 使用arg或者param都行,要注意的是,arg是从arg0开始的,param是从param1开始的

<select id="checkLogin" resultType="User">  
	select * from t_user where username = #{arg0} and password = #{arg1}  
select>

<select id="checkLogin" resultType="User">
	select * from t_user where username = '${param1}' and password = '${param2}'
select>

3、map集合类型的参数

  • 若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号

<select id="checkLoginByMap" resultType="User">
	select * from t_user where username = #{username} and password = #{password}
select>
@Test
public void checkLoginByMap() {
	SqlSession sqlSession = SqlSessionUtils.getSqlSession();
	ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
	Map<String,Object> map = new HashMap<>();
	map.put("usermane","admin");
	map.put("password","123456");
	User user = mapper.checkLoginByMap(map);
	System.out.println(user);
}

4、实体类类型的参数

  • 若mapper接口中的方法参数为实体类对象时此时可以使用${}和#{},通过访问实体类对象中的属性名获取属性值,注意${}需要手动加单引号

<insert id="insertUser">
	insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
insert>
@Test
public void insertUser() { 
	SqlSession sqlSession = SqlSessionUtils.getSqlSession();
	ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
	User user = new User(null,"Tom","123456",12,"男","[email protected]");
	mapper.insertUser(user);
}

5、使用@Param标识参数

  • 可以通过@Param注解标识mapper接口中的方法参数,此时,会将这些参数放在map集合中
    1. 以@Param注解的value属性值为键,以参数为值;
    2. 以param1,param2…为键,以参数为值;
  • 只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号

    <select id="CheckLoginByParam" resultType="User">
        select * from t_user where username = #{username} and password = #{password}
    select>
@Test
public void checkLoginByParam() {
	SqlSession sqlSession = SqlSessionUtils.getSqlSession();
	ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
	mapper.CheckLoginByParam("admin","123456");
}
  • 建议分成两种情况进行处理
    1. 实体类类型的参数
    2. 使用@Param标识参数

总结

以上就是Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式的相关知识点,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

你可能感兴趣的:(Mybatis,mybatis,java,开发语言)