文章目录
-
-
- 使用注解开发
-
-
- 面向接口编程
- 使用注解开发
- 增删查改
-
-
使用注解开发
面向接口编程 1.关于接口的理解。
接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。
接口的本身反映了系统设计人员对系统的抽象理解。
接口应有两类:第一类是对一个个体的抽象,它可对应为一个抽象体(abstract class);
第二类是对一个个体某一方面的抽象,即形成一个抽象面(interface);
一个体有可能有多个抽象面。
抽象体与抽象面是有区别的。
2.设计接口的另一个不可忽视的因素是接口所处的环境(context,environment),系统论的观点:环境是系统要素所处的空间与外部影响因素的总和。任何接口都是在一定的环境中产生的。因此环境的定义及环境的变化对接口的影响是不容忽视的,脱离原先的环境,所有的接口将失去原有的意义。
3.按照组件的开发模型(3C),它们三者相辅相成,各司一面,浑然一体,缺一不可。
面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法
面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现
使用注解开发 UserMapper
public interface UserMapper {
@Select("select * from user")
List getUserList();
}
mybatis-config.xml
>name="logImpl" value="https://www.it610.com/article/STDOUT_LOGGING"/>
test
public class UserMapperTest {
@Test
public void getUSerList(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}
本质:反射机制实现
底层:动态代理!
增删查改 【Mybatis知识小汇(7)——使用注解开发】UserMapper
public interface UserMapper {
@Select("select * from user")
List getUserList();
@Select("select * from user where id = #{id}")
User getUserById(int id);
@Insert("insert into user values(#{id}, #{name}, #{pwd})")
int addUser(User user);
//当有多个参数时,要使用@Param,注意sql语句使用的是注解的参数
@Delete("delete from user where id = #{uid}")
int deleteUserById(@Param("uid")int id);
@Update("update user set name = #{name}, pwd = #{pwd} where id = #{id}")
int updateUser(User user);
}
test
public class UserMapperTest {
@Test
public void getUSerList(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
sqlSession.close();
}@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(8, "悠悠", "888888"));
sqlSession.close();
}@Test
public void deleteUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUserById(8);
sqlSession.close();
}@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(1, "11", "123456"));
sqlSession.close();
}
}
其他文件修改的地方
MybatisUtil
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
//设置为自动提交
}
mybatis-config.xml
关于@Param()注解
- 基本数据类型的参数或者String类型,需要注解
- 引用类型不用加
- 如果只有一个基本类型可以不加,但建议都加上
- 如果使用了注解,那么在sql中应用时要用注解时的参数
如有不对的地方欢迎指出,共同进步!
推荐阅读
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- SSM|SSM 和 SpringBoot 分别如何整合 SpringSecurity()
- SSM|SpringMVC运行流程 源码分析
- SSM|【雷丰阳】Spring纯注解版 bean的生命周期
- mybatis动态sql练习题(个人整理)smbms-ssm
- java|【Maven+SSM】超详细Spring+SpringMVC+Mongo集成
- Mybatis练习02-pom
- 一.个人博客(基于spring+springmvc+mybatis+maven)配置文件
- SSM|ssm框架学习---mybatis中一对多关系的查询