MyBatis学习二
MyBatis学习day2
1.自定义mybatis分析
2.mybatis的curd(重点)
log4j文件放在resources下
1)增
先从接口写方法 ---》 在映射配置中写一个配置 ---》
在传递的对象中取值 ,#{按照实体类中的属性写}
<insert>标签
2)改
<update>标签
3)删
<delete>标签
4)根据id查询用户信息
5)模糊查询
like #{username} :用的是PreparedStatement的参数占位符 ---》 实际开发中用的多
查询语句中like '%${value}%' : 用的是Statement对象拼接字符串 ---》很少用(了解)
6)查询总记录数
7)获取插入数据后的数据id
SELECT LAST_INSERT_ID();
3.参数深入
CURD中可能遇到的问题:参数传递以及返回值的封装
将实体类对象包装起来,进行查询;在实际开发中,可由多个对象组合进行查询
4.实体属性和数据库不对应情况及解决
将User实体类的属性更改,和数据库的字段不一致,则需要在配置文件中的查询语句等
位置处修改和更改后的属性保持一致
如username更改为 userName,则配置文件中的对应的 =#{userName}
查询中无法封装:
解决方法一:取别名,使得属性和数据库中保持一致 username as userName(执行效率高)
解决方法二:配置查询结果的列名和实体类的属性名的对应关系(开发效率高,因为更改地方少)
5.mybatis实现dao层开发(不使用代理模式,自己写实现类)
UserDaoImpl实现接口 ---》 重写所有的方法
重写过程:
1)根据factory获取SqlSession对象
2)调用方法实现更新(注意传递的参数类型以及形式)
3)提交事务(有的需要有的不需要)
4)释放资源
例如:
实现类与代理源码分析(使用断点调试,找出执行顺序)
代理实现分析:
6.properties标签的使用及细节
1)使用数据库的配置文件 jdbc.properties对数据库连接进行配置
2)使用url来配置资源:url需要使用路径下的
7.typeAliases和package标签
在mapper中配置package属性标签