封装SqlSessionUtils
| |
| |
| |
| |
| |
| public static SqlSession getSqlSession(boolean b){ |
| SqlSession sqlSession = null; |
| try { |
| InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); |
| SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); |
| sqlSession = sqlSessionFactory.openSession(b); |
| } catch (IOException exception) { |
| exception.printStackTrace(); |
| } |
| return sqlSession; |
| } |
获取参数值的两种方式
mapper接口方法的参数为单个字面量
#{}和${}都可以,以任意名称(建议和形参写一样的)获取参数值,但是需要注意${}的单引号问题
| User getUserById(String userId); |
| <select id="getUserById" resultType="User"> |
| select * from t_user where id = #{userId} |
| select * from t_user where id = "${userId}" |
| </select> |
mapper接口方法的参数为多个
自动将参数放入map
此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储
因此只需要通过#{}和${}为键的方式访问值即可,但是需要注意${}的单引号问题
| User checkUser(String username, String password); |
| |
| <select id="checkUser" resultType="User"> |
| |
| select * from t_user where id = #{arg0} and password = #{arg1} |
| </select> |
手动将参数放入map集合
只需要通过#{key}和${key}以键的方式访问值即可,但是需要注意${}的单引号问题
| @Test |
| public void testByMap(){ |
| SqlSession sqlSession = SqlSessionUtils.getSqlSession(true); |
| UserMapper mapper = sqlSession.getMapper(UserMapper.class); |
| HashMap<String, Object> stringObjectHashMap = new HashMap<>(); |
| stringObjectHashMap.put("username","asd"); |
| stringObjectHashMap.put("password","123"); |
| User user = mapper.checkUserByMap(stringObjectHashMap); |
| System.out.println(user); |
| } |
| User checkUserByMap(Map<String, Object> map); |
| <select id="checkUser" resultType="User"> |
| |
| select * from t_user where id = #{username} and password = #{password} |
| </select> |
**接口方法的参数是实体类类型的参数
只需要通过#{属性名}和${属性名}以键的方式访问值即可,但是需要注意${}的单引号问题
| public void testByBean(){ |
| SqlSession sqlSession = SqlSessionUtils.getSqlSession(true); |
| UserMapper mapper = sqlSession.getMapper(UserMapper.class); |
| int i = mapper.insertUserByBean(new User(null, "ert", "789", 56, 'f', "123213@333.com")); |
| System.out.println(i); |
| } |
| |
| <insert id="insertUserByBean"> |
| insert into t_user values(null, #{username}, #{password}, #{age}, #{sex}, #{email}) |
| </insert> |
**使用@Param注解命名参数
建议除了实体类都用这个方法
此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储
| User checkUserByAnnotation(@Param("username")String username, @Param("password")String password); |
| <select id="checkUserByAnnotation" resultType="User"> |
| |
| select * from t_user where username = #{username} and password = #{password} |
| </select> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律