码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis

时间:2019-06-25 10:05:59      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:star   内容   现在   localhost   default   word   div   env   led   

1.先创建一个目录src/main/resources/mybatis/,再在此目录下创建一个mybatis.cfg.xml配置文件,配置文件的内容如下

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <typeAliases><!--进行类别名的定义处理,此处设置的别名为News-->
 7         <typeAlias type="com.yootk.mybatis.vo.News" alias="News"/>
 8     </typeAliases>
 9     <environments default="mysqlDev">    <!-- 定义数据库连接的相关配置 -->
10         <environment id="mysqlDev"> <!-- 配置MySQL数据库连接 -->
11             <transactionManager type="jdbc"/>   <!-- 事务控制类型 -->
12             <dataSource type="POOLED">  <!-- 使用连接池的模式管理连接 -->
13                 <property name="driver" value="org.gjt.mm.mysql.Driver" />
14                 <property name="url" value="jdbc:mysql://localhost:3306/yootk" />
15                 <property name="username" value="root" />
16                 <property name="password" value="mysqladmin" />
17             </dataSource>
18         </environment>
19     </environments>
20     <mappers>
21         <mapper resource="com/yootk/mybatis/vo/mapper/News.xml"/>
22     </mappers>
23 </configuration>

2.再创建src/main/java/com.yootk.mybatis/vo/mapper/文件夹,再在此目录下创建New.xml配置文件,文件的配置如下

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <!-- 定义所有的SQL语句的映射, 对于本实体而言相关的所有的SQL代码都在此定义 -->
5 <mapper namespace="com.yootk.mapper.NewsNS"><!--这里的namespace是一个sql配置文件的唯一标识-->
6     <insert id="doCreate" parameterType="com.yootk.mybatis.vo.News"><!--这里的id是一个SQL语句的唯一标识-->
7       insert into news (title,content)values(#{title},#{content});
8     </insert>
9 </mapper>

3.获取生成主键的方法一:

1   <!-- 1.先修改News.xml配置文件-->
    <!--
keyProperty="nid":描述的是当前程序VO类中对应的属性名称-->
    <!--keyColumn="nid":描述的是数据表中的主键列-->
    <!--useGeneratedKeys="true":进行主键的生成操作-->
2   <insert id="doCreate" parameterType="News" keyProperty="nid" keyColumn="nid" useGeneratedKeys="true"> 3  insert into news (title,content)values(#{title},#{content}); 4 </insert>
    <!--在程序中通过News类对象.getNid()即可获取增长后的id内容了-->

4.获取生成主键的方法二:

1   <!--注:keyProperty="nid":表示VO类中对应的属性名称;keyColumn="nid"表示的是主键列(如果列名称和属性名称可以不写此配置);
    resultType="java.lang.Long":主键查询之后的返回值类型;order="AFTER":表示的是此语句出现的位置,BEFORE是之前,AFTER是之后,在mysql中用之后,
    在oracle中用之前--> 3    <insert id="doCreate" parameterType="News"> 4 insert into news (title,content)values(#{title},#{content}); 5 <selectKey keyColumn="nid" keyProperty="nid" order="AFTER" resultType="java.lang.Long"> 6 SELECT LAST_INSERT_ID() 7 </selectKey> 8 </insert>

5.当通过MyBatis传递一个参数数据的时候,这个参数的名称就可以随便写了,但是如果传递了多个参数(或VO实例,Map实例)就需要编写准确的名称。如下代码:

<delete id="doRemove" parameterType="News">
	delete from news where nid=#{chjsdbvds} 
</delete>
<!--如果参数名称这样写,在程序中给参数赋值的时候只能赋一个参数,不能赋成VO类对象或Map类对象--> 

6.在SqlSession接口中有insert两个,delete两个,update两个,rollback,commit,还有几个查询方法,其中insert·,delete和update最终执行的都是update的方法,所以在调用的时候调用哪个方法没有实质的影响,这样写的目的只是为了我们更好的理解代码。

7.在News.xml配置文件中写findSplit()方法

<mapper namespace="com.yootk.mapper.NewsNS">
  <select id="findSplit" parameterType="java.util.Map" resultType="News">
     select nid,title,content from news where ${column} like #{keyword} limit #{start},#{lineSize};
  </select>
</mapper>

8.关于在MySql映射文件(News.xml)中 使用"${}"和"#{}"的区别?

${属性}执行:select nid,title,content from news where title like ? limit ?,?;如果使用"${属性}",那么在生成SQL语句的时候就会自动获取里面的内容进行处理。
#{属性}执行:select nid,title,content from news where ? like ? limit ?,?;而"#{属性}"表示内容将以占位符"?"的形式出现在程序代码中。

9.处理VO类属性与数据表字段名称不相同问题,采用<resultMap>标签

<!-- 在mapper标签中的首部加入resultMap标签 -->
<mapper namespace="com.yootk.mapper.NewsNS">
    <resultMap id="NewsMap" type="News">    <!-- id就是以后引用的主要标记 -->
        <id column="c_nid" property="nid"/> <!-- column指定列名称,property指定属性名称 -->
        <id column="c_title" property="title"/> <!-- column指定列名称,property指定属性名称 -->
        <id column="c_content" property="content"/> <!-- column指定列名称,property指定属性名称 -->
    </resultMap>
    <insert id="doCreate" parameterType="News" keyColumn="c_nid" keyProperty="nid" useGeneratedKeys="true">
        INSERT INTO t_news(c_title,c_content) VALUES (#{title},#{content}) ;
    </insert>
    <select id="findById" parameterType="java.lang.Long" resultMap="NewsMap">
        SELECT c_nid ,c_title ,c_content  FROM t_news WHERE c_nid=#{wodenid} ;
    </select>
</mapper>
强调:在以后的开发中还是尽量将VO类的类名称与数据表名称保持一致,VO类的属性名称与数据表的字段名称保持一致

  

mybatis

标签:star   内容   现在   localhost   default   word   div   env   led   

原文地址:https://www.cnblogs.com/wxl123/p/11080594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!