ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis学习日志一

2019-08-29 22:04:00  阅读:124  来源: 互联网

标签:文件 实体类 映射 学习 sql Mybatis 日志 id


一、初识Mybatis

  MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 二、使用步骤 

  1. 加入相关的jar包。

  2. 创建相应的实体类bean。

  3. 创建mybatis的配置文件。 

  4. 创建mybatis的映射文件。

  5. mybatis的映射文件要引入到配置文件中。

  6. 测试。

 三、优化

  1.如果映射文件中的查询条件有多个,则可以使用Map集合作为参数

  2.将属性文件单独列出db.recourses,需要将属性文件导入Mybatis配置文件中,之后使用${}

    <properties resource="db.properties"></properties>

    ${jdbc.driver}

  3.为实体类起别名,为包下所有类起别名,别名为类名(不建议使用,不方便别人解读代码)

    <typeAliases>
      <package name="com.zhiyou100.klb.bean"/>
    </typeAliases>

  4.加入日志信息log4j.properties,方便我们查错

 四、使用接口结合xml文件

  1.创建一个接口,该接口要和映射文件匹配。方法名=ID名

  2.映射文件中,命名空间要与映射文件路径一直,例如:com.zhiyou100.klb.dao.UsersDao

  3.测试程序运行状况,  

    //解析conf.xml
    Reader reader = Resources.getResourceAsReader("conf.xml");
    //获取sessionFactory对象
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    //获取session对象,用于操作数据库
    session = sessionFactory.openSession();
    //得到接口的实现类
    usersDao = session.getMapper(UsersDao.class);

五、解决数据库中的字段与类中的属性不匹配问题

  1.在SQL语句中为字段起别名,别名与类的属性名一致

  2.利用resultMap  

    <!--引用resultMap标签 -->
    <select id="getClazz" parameterType="int" resultMap="clazzMap"></select>
    <!--resultMap:写数学与字段的对应关系
    type:表示哪个实体类与表的对应关系
    -->
    <resultMap type="com.zhiyou100.klb.bean.Clazz" id="clazzMap">
      <!-- ID:表示表中的主键与实体类的属性的对应关系 -->
      <id column="c_id" property="cid"/>
      <result column="c_name" property="cname"/>
      <result column="teacher_id" property="tid"/> 
    </resultMap>

 六、联表查询

  <!--引用resultMap标签 -->
  <select id="getClazz" parameterType="int" resultMap="clazzMap">
  select * from class c,teacher t,student s where c.teacher_id=t.t_id and c.c_id=s.class_id and c.c_id = #{id}
  </select>

  <!--resultMap:写数学与字段的对应关系
  type:表示哪个实体类与表的对应关系
  -->
  <resultMap type="com.zhiyou100.klb.bean.Clazz" id="clazzMap">
  <!-- ID:表示表中的主键与实体类的属性的对应关系 -->
  <id column="c_id" property="cid"/>
  <result column="c_name" property="cname"/>
  <result column="teacher_id" property="tid"/>

  <association property="teacher" javaType="com.zhiyou100.klb.bean.Teacher">
  <id column="t_id" property="tid"/>
  <result column="t_name" property="tname"/>
  </association>

  <collection property="students" ofType="com.zhiyou100.klb.bean.Student">
  <id column="s_id" property="sid"/>
  <result column="s_name" property="sname"/>
  <result column="class_id" property="cid"/>
  </collection>
  <!-- <association property="teacher" javaType="com.zhiyou100.klb.bean.Teacher"
  column="teacher_id" select="com.zhiyou100.klb.dao.TeacherDao.getTeacher">
  </association> -->
  </resultMap>

七、Mybatis中${ }和#{ }的区别

  1. $: 解析时不会为内容添加”” 他是sql语句的拼接存在sql注入的危害。传入的为表结构时。
  2. #: 解析时会为内容添加””,它的sql时采用占位符,防止sql注入。

八、添加对象时如何返回ID

  <insert id="add" parameterType="Users" useGeneratedKeys="true" keyProperty="id">
    insert into users(name,age) values(#{name},#{age})
  </insert>

标签:文件,实体类,映射,学习,sql,Mybatis,日志,id
来源: https://www.cnblogs.com/kklb/p/11432250.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有