/**
-
根据id查询一个用户id
-
@param userId
*/
User findById(Integer userId);
/**
-
模糊查询用户信息
-
@param username
*/
List findByName(String username);
/**
- 查询总用户数
*/
int findTotal();
/**
- 根据queryVo查询中的条件查询用户
*/
List findUserByVo(QueryVo Vo);
}
配置接口映射文件IUserDao.xml:
需要注意的是:其中的参数符号#{username},#{birthday},#{birthday},#{sex},#{address}必须和User类的每个属性名一一对应,不可以乱写。
<?xml version="1.0" encoding="UTF-8"?>select * from user
select last_insert_id();
insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday})
update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}
delete from user where id=#{id}
select * from user where id=#{id}
select * from user where username like #{username}
select count(id) from user
select * from user where username like #{user.username}
同时,在之前我们类的属性与数据库中的属性也是一一对应的,如果在没有对应,那么在执行查询操作时会发现属性名称不对应的数据无法查询出来,这时我们有两个解决方式:
-
1.对数据库查询语句进行操作:起别名 (这种方式的执行效率是最高的)
-
2.采用配置的方式:
<resultMap id="userMap" type="com...ClassName"> </resultMap>
(执行效率低,开发效率高)
select * from user
创建MybatisTest类测试方法:
public class MybatisTest {
private InputStream in;
private SqlSession sqlSession;
private IUserDao userDao;
@Before//再测试方法执行之前执行
public void init() throws Exception{
//1.读取配置文件,生成字节输入流
in= Resources.getResourceAsStream(“SqlMapConfig.xml”);
//2.创建SqlSessionFactory工厂,获取SqlSessionFactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
//3.使用工厂生产SqlSession对象
sqlSession=factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
userDao=sqlSession.getMapper(IUserDao.class);
}
@After//用于在测试方法执行之后执行
public void destroy() throws Exception{
//提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
in.close();
}
/**
- 测试查询所有
*/
@Test
public void testFindAll(){
//5.使用代理对象执行方法
List users=userDao.findAll();
for (User user :users){
System.out.println(user);
}
}
/**
- 测试添加操作
*/
@Test
public void testSave(){
User user = new User();
user.setId(10);
user.setUsername(“ly”);
user.setAddress(“河南省”);
user.setSex(“男”);
user.setBirthday(new Date());
//5.使用代理对象执行方法
userDao.saveUser(user);
}
/**
- 测试修改操作
*/
@Test
public void testUpdate(){
User user = new User();
user.setId(10);
user.setUsername(“lll”);
user.setAddress(“河南省”);
user.setSex(“男”);
user.setBirthday(new Date());
//5.使用代理对象执行方法
userDao.updateUser(user);
}
/**
- 测试删除操作
*/
@Test
public void testDelete(){
//5.使用代理对象执行方法
userDao.deleteUser(10);
}
/**
- 测试查询一个操作
*/
@Test
public void testFindOne(){
//5.使用代理对象执行方法
User user = userDao.findById(1);
System.out.println(user);
}
/**
- 测试模糊查询操作
*/
@Test
public void testFindName(){
//5.使用代理对象执行方法
List users = userDao.findByName(“%张%”);
//List users = userDao.findByName(“张”);
for(User user :users){
System.out.println(user);
}
}
/**
- 测试查询总记录条数
*/
@Test
public void testFindTotal(){
//5.使用代理对象执行方法
int count = userDao.findTotal();
System.out.println(“总记录条数为:”+count);
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后
由于篇幅原因,就不多做展示了
006)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-7jYsHrqc-1710699507007)]
最后
[外链图片转存中…(img-mI3YDheG-1710699507007)]
[外链图片转存中…(img-nwRa2Qw0-1710699507007)]
[外链图片转存中…(img-B5olJ6Zh-1710699507008)]
[外链图片转存中…(img-48lteO0K-1710699507008)]
[外链图片转存中…(img-rqcjOUn7-1710699507009)]
[外链图片转存中…(img-ihOOlsSQ-1710699507009)]
由于篇幅原因,就不多做展示了