**mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是,Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建**
sql 类型主要分成 :
- @select ()
- @update ()
- @Insert ()
- @delete ()
注意:利用注解开发就不需要mapper.xml映射文件了 .
1.在接口中添加注解
@Select("select * from mybatis.user")
List<User> getUsers();
@Select("select * from mybatis.user where id = #{id}")
User getUserById(@Param("id") int id);
@Insert("insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})")
int addUser(User user);
@Update("update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id}")
int upDateUser(User user);
@Delete("delete from mybatis.user where id = #{id}")
int deleteUser(@Param("id") int id);
<!--绑定接口-->
<mappers>
<mapper class="com.sy.dao.UserMapper"/>
</mappers>
2.改造MybatisUtils工具类的getSession( ) 方法,重载实现。
注意:增删改一定记得对事务的处理,查询不用
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);//事务自动提交
}
}
3.测试
@Test
public void test(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
/*List<User> users = mapper.getUsers();
for (User user : users) {
System.out.println(user);
}*/
User userById = mapper.getUserById(5);
System.out.println(userById);
sqlSession.close();
}
@Test
public void test2(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(7,"大河","456"));
mapper.upDateUser(new User(5,"披风","123456"));
mapper.deleteUser(4);
sqlSession.close();
}
3.用debug查看原理
原理大概:
图片处处:
————————————————
版权声明:本文为CSDN博主「狂神说」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33369905/article/details/106647290
@Param
- @Param注解用于给方法参数起一个名字。使用原则:
- 在方法只接受一个参数的情况下,可以不使用@Param。
- 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
- 如果参数是 JavaBean , 则不能使用@Param。
- 不使用@Param注解时,参数只能有一个,并且是Javabean。
#与$的区别
INSERT INTO user (name) VALUES (#{name});
INSERT INTO user (name) VALUES (?);
- ${} 的作用是直接进行字符串替换
INSERT INTO user (name) VALUES (‘${name}’);
INSERT INTO user (name) VALUES (‘xxxx’);