mybatis Example 使用方法

本文详细解析了MyBatis框架中Mapper接口的功能,包括数据的增删查改操作,以及如何通过Example对象设置复杂的查询条件,适用于需要掌握MyBatis高级使用的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

申明:转载博客--来自 https://blog.youkuaiyun.com/biandous/article/details/65630783

一、mapper接口中的方法解析
mapper接口中的函数及方法

方法    功能说明
int countByExample(UserExample example) thorws SQLException    按条件计数
int deleteByPrimaryKey(Integer id) thorws SQLException    按主键删除
int deleteByExample(UserExample example) thorws SQLException    按条件查询
String/Integer insert(User record) thorws SQLException    插入数据(返回值为ID)
User selectByPrimaryKey(Integer id) thorws SQLException    按主键查询
ListselectByExample(UserExample example) thorws SQLException    按条件查询
ListselectByExampleWithBLOGs(UserExample example) thorws SQLException    按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生。
int updateByPrimaryKey(User record) thorws SQLException    按主键更新
int updateByPrimaryKeySelective(User record) thorws SQLException    按主键更新值不为null的字段
int updateByExample(User record, UserExample example) thorws SQLException    按条件更新
int updateByExampleSelective(User record, UserExample example) thorws SQLException    按条件更新值不为null的字段
二,example实例解析
mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分 
xxxExample example = new xxxExample(); 
Criteria criteria = new Example().createCriteria();

方法    说明
example.setOrderByClause(“字段名 ASC”);    添加升序排列条件,DESC为降序
example.setDistinct(false)    去除重复,boolean型,true为选择不重复的记录。
criteria.andXxxIsNull    添加字段xxx为null的条件
criteria.andXxxIsNotNull    添加字段xxx不为null的条件
criteria.andXxxEqualTo(value)    添加xxx字段等于value条件
criteria.andXxxNotEqualTo(value)    添加xxx字段不等于value条件
criteria.andXxxGreaterThan(value)    添加xxx字段大于value条件
criteria.andXxxGreaterThanOrEqualTo(value)    添加xxx字段大于等于value条件
criteria.andXxxLessThan(value)    添加xxx字段小于value条件
criteria.andXxxLessThanOrEqualTo(value)    添加xxx字段小于等于value条件
criteria.andXxxIn(List<?>)    添加xxx字段值在List<?>条件
criteria.andXxxNotIn(List<?>)    添加xxx字段值不在List<?>条件
criteria.andXxxLike(“%”+value+”%”)    添加xxx字段值为value的模糊查询条件
criteria.andXxxNotLike(“%”+value+”%”)    添加xxx字段值不为value的模糊查询条件
criteria.andXxxBetween(value1,value2)    添加xxx字段值在value1和value2之间条件
criteria.andXxxNotBetween(value1,value2)    添加xxx字段值不在value1和value2之间条件
三、应用举例
1.查询
① selectByPrimaryKey()

User user = XxxMapper.selectByPrimaryKey(100); //相当于select * from user where id = 100
1
② selectByExample() 和 selectByExampleWithBLOGs()

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("wyw");
criteria.andUsernameIsNull();
example.setOrderByClause("username asc,email desc");
List<?>list = XxxMapper.selectByExample(example);
//相当于:select * from user where username = 'wyw' and  username is null order by username asc,email desc
1
2
注:在iBator逆向工程生成的文件XxxExample.java中包含一个static的内部类Criteria,Criteria中的方法是定义SQL 语句where后的查询条件。

2.插入数据
①insert()

User user = new User();
user.setId("dsfgsdfgdsfgds");
user.setUsername("admin");
user.setPassword("admin")
user.setEmail("wyw@163.com");
XxxMapper.insert(user);
//相当于:insert into user(ID,username,password,email) values ('dsfgsdfgdsfgds','admin','admin','wyw@126.com');
1
2
3.更新数据
①updateByPrimaryKey()

User user =new User();
user.setId("dsfgsdfgdsfgds");
user.setUsername("wyw");
user.setPassword("wyw");
user.setEmail("wyw@163.com");
XxxMapper.updateByPrimaryKey(user);
//相当于:update user set username='wyw', password='wyw', email='wyw@163.com' where id='dsfgsdfgdsfgds'
1
2
②updateByPrimaryKeySelective()

User user = new User();
user.setId("dsfgsdfgdsfgds");
user.setPassword("wyw");
XxxMapper.updateByPrimaryKey(user);
//相当于:update user set password='wyw' where id='dsfgsdfgdsfgds'
1
2
③ updateByExample() 和 updateByExampleSelective()

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("admin");
User user = new User();
user.setPassword("wyw");
XxxMapper.updateByPrimaryKeySelective(user,example);
//相当于:update user set password='wyw' where username='admin'
1
2
updateByExample()更新所有的字段,包括字段为null的也更新,建议使用 updateByExampleSelective()更新想更新的字段

4.删除数据
①deleteByPrimaryKey()

XxxMapper.deleteByPrimaryKey(1);  //相当于:delete from user where id=1
1
②deleteByExample()

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("admin");
XxxMapper.deleteByExample(example);
//相当于:delete from user where username='admin'
1
2

5.查询数据数量
①countByExample()

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("wyw");
int count = XxxMapper.countByExample(example);
//相当于:select count(*) from user where username='wyw'

---------------------

本文来自 : https://blog.youkuaiyun.com/biandous/article/details/65630783

MyBatis是一个轻量级的对象关系映射框架,它简化了Java应用程序访问数据库的过程。在MyBatis中,你可以通过XML配置文件或注解来描述数据表、字段以及SQL查询,并通过Mapper接口与数据库交互。 一个简单的MyBatis Example示例包括以下几个步骤: 1. **配置文件**(mybatis-config.xml 或 mapper-mapping.xml): 配置SqlSessionFactory,这是连接数据库的核心组件。 ```xml <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/UserMapper.xml"/> </mappers> </configuration> ``` 2. **Mapper接口**(UserMapper.java): 定义SQL操作的接口,通常包含增删改查方法。 ```java public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User selectUser(int id); // 其他操作... } ``` 3. **XML映射文件**(UserMapper.xml): 描述如何将SQL查询与Mapper接口的方法对应起来。 ```xml <mapper namespace="com.example.UserMapper"> <select id="selectUser" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id} </select> </mapper> ``` 4. **使用Mapper**: 创建SqlSession并调用Mapper接口方法执行数据库操作。 ```java SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(conf); try (SqlSession sqlSession = sqlSessionFactory.openSession()) { UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.selectUser(1); // 根据ID获取用户信息 System.out.println(user); } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值