栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis笔记

文章目录
    • 1. Mybatis概述
    • 2. Maven中Mybatis的环境配置
    • 3. mybatis的开发步骤
    • 4. 使用xml完成Mybaties的CRUD
      • 4.1 删除
      • 4.2 修改
      • 4.3 添加
      • 4.4 查询
        • 4.4.1 根据参数查询(不推荐)
        • 4.4.2 根据对象查询
      • 4.4.3 模糊查询
    • 5. 使用注解的方式完成mybatis的CRUD

1. Mybatis概述

mybatis是apache组织的一个开源项目,最初叫iBatis,2010年迁移到了Google改名为mybatis。2013年迁移GitHub。
mybatis是一个持久层框架,支持自定义动态sql,存储过程、高级映射。
mybatis对原有的jdbc中的所有操作都实现了封装,消除了所有jdbc的代码,使开发者只需要关心sql语句。

2. Maven中Mybatis的环境配置
  1. 在pom.xml中引入:mysql驱动依赖、mybatis依赖
    建议引入:log4j(日志依赖)、junit(单元测试依赖)


    4.0.0
    com.mysy
    test_mybatis
    1.0-SNAPSHOT

    
        
        
            mysql
            mysql-connector-java
            5.1.6
        

        
        
            org.mybatis
            mybatis
            3.4.5
        

        
        
            log4j
            log4j
            1.2.17
        

        
        
            junit
            junit
            4.12
        
    

  1. 在resource目录下创建log4j.properties,没有引入log4j依赖不用创建
### 设置###
log4j.rootLogger = debug,stdout

### 输出信息到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.Encoding = utf-8
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
  1. 在resource包下创建核心配置文件:mybatis-config.xml




    
        
            
            
                
                
                
                
            
        
    

4.在resource下创建配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis01
jdbc.username=root
jdbc.password=1234

在mybatis的主配置文件中的configuration标签中定义properties标签,并引入指定的properties文件


3. mybatis的开发步骤
  1. 创建实体类
  2. 创建实体类对应的Mapper接口,以及相关增删改查方法
  3. 在resource下编写mapper接口对应的Mapper.xml文件




    
        select * from user
    

namespace:接口类名,例如:com.mysy.mapper.UserMapper
id:接口方法名,例如:findAll()
resultType:返回值类型,查找方法的返回值无论是数组、集合还是实体类只需要写实体类名即可。增删改方法没有返回值类型。

可以给类型取别名:
在mybatis的主配置文件中的configuration标签中定义typeAliases,有两种方式:


  
  

  
  

推荐使用package标签

要将接口所对应的xml文件注册在mybatis的主配置文件中


	
	

如果要配置的xml文件较多可以使用如下方式:


	

package标签中name属性的值是xml文件所对应的接口所在的包名;还需要保证这些xml文件所在的目录结构必须与接口的包结构完全一致

4. 使用xml完成Mybaties的CRUD 4.1 删除

	sql语句

4.2 修改

	sql语句

4.3 添加

	sql语句

主键自增长的添加方法,两种方法,推荐没有注释的
mybatis的添加语句可以不写添加的字段 直接写添加的值,建议类的属性全部写上,因为没有给类的属性赋值就传一个空值


insert into user values(#{id},#{name},#{birthday},#{address},#{tel})
		

主键回填:

  1. 自增长主键回填

   
   
   
       select last_insert_id()
   
   insert into user values(null,#{name},#{birthday},#{address},#{tel})

selectkey标签可以返回执行添加语句前后未知的自增长主键的值到实体类对象中

uuid的主键回填

insert id="saveUser2">
    
        select uuid()
    
    insert into user2 values(#{id},#{name},#{age})

select uuid():生成一个uuid

4.4 查询

基础结构


4.4.1 根据参数查询(不推荐)

Mapper接口中的方法

Customer findCustomerById(Integer id);

查询语句

 
	
 	select * from customer where name = #{param1} and age = #{param2}

对方法的参数使用注解起别名
Mapper接口中的方法

ist findCustomersByNameAndSex(@Param("name") String name, @Param("sex") String Sex);

查询语句


 select * from customer where name = #{name} and age = #{age} and sex = #{sex}

4.4.2 根据对象查询

Mapper接口中的方法

Customer findCustomerByUserNameAndPassword(Customer c);

创建对象传入参数

Customer c = new Customer();
c.setUsername("15121001484");
c.setPassword("123456");
Customer cus = customerMapper.findCustomerByUserNameAndPassword(c);

查询语句 表的键与实体类名相同






select * from customer where name like concat('%',#{name},'%')






5. 使用注解的方式完成mybatis的CRUD

直接在Mapper接口的方法上写注解

@Insert("insert into passenger values (#{id},#{name},#{sex},#{age})")
int savePassenger(Passenger p);

@Delete("delete from passenger where id = #{iidd}")
int deletePassenger1(Integer id);

@Delete("delete from passenger where id = #{id}")
int deletePassenger2(Passenger p);


@Update("update passenger set sex = #{sex} , age = #{age} where id = #{id}")
int updatePassenger(Passenger p);


@Select("select * from passenger where id = #{id}")
Passenger findPassengerById(Passenger p);

@Select("select count(*) from passenger")
int findPassengerCount();

//    @Select("select * from passenger where name like #{name}")
@Select("select * from passenger where name like concat('%',#{name},'%')")
List findPassengersLikeName(Passenger p);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号