Mybatis,Sql注解开发
只适合简单的Sql语句 复杂的时候不推荐使用
1.select注解开发
1.配置接口里面的注解
@Select(select *from user)
List<User> getUserList();
2.核心配置文件绑定接口
<mappers>
<mapper class="com.ws.Dao.UserMapper"/>
</mappers>
3.测试
public void getUserList() {
//获得Session对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//getMapper 获得接口 对应的就是Dao里面的UserMapper的sql语句 直接执行
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
2.自动提交事务
在工具类中设置openSession的值为true的话 直接可以自动提交commit 不再使用commit
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
}
3.insert注解开发
1.接口配置
@Insert("insert into user(id,name,pwd)values(#{id},#{name},#{pwd})")
int addUser(User user);
2.之前已经绑定过了 不用再进行绑定 直接测试
@Test
public void addUser() {
//获得Session对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//getMapper 获得接口 对应的就是Dao里面的UserMapper的sql语句 直接执行
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(5,"haha","123456"));
sqlSession.close();
}
4. update注解开发
1.接口配置
@Update("update user set name=#{name},pwd=#{pwd} where id=#{id}")
int updateUser(User user);
2.测试
@Test
public void updateUser() {
//获得Session对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//getMapper 获得接口 对应的就是Dao里面的UserMapper的sql语句 直接执行
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(5,"www","155555"));
sqlSession.close();
}
5.delete注解开发
1.接口配置 因为需要传递一个id 所以用的注解@Param 直接传递参数
@Delete("delete from user where id=#{id}")
int deleteUser(@Param("id") int id);
2.测试
@Test
public void deleteUser() {
//获得Session对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//getMapper 获得接口 对应的就是Dao里面的UserMapper的sql语句 直接执行
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(5);
sqlSession.close();
}
6.Param()注解
-
基本类型的参数或者String类型,也需要加上
-
引用类型不需要加
-
如果只有一个基本类型的话 ,可以忽略 ,但是建议大家都加上
-
我们再SQL中引用的就是@Param中设定的属性名
-
#{}和${} 区别
-
${}存在Sql注入 而#{}是预编译不会Sql注入