SQL极简教程 · MySQL · MyBatis · JPA 技术笔记 教程 总结mybatis我爱编程

Maven管理的Spring + SpringMVC + Myb

2017-03-16  本文已影响676人  docki

一、配置maven的pom.xml加载jar包

为了后续开发的方便,将SSM框架所有需要的jar包一并加载进来

配置好pom.xml之后右键单击工程名:Runs As ->Maven Install 将这些jar包下载至之前配置好的本地仓库

二、创建实体类

此处与Hibernate中实体类相同,都是按照ORM思想将类与数据库中的表做一对一的映射,类名与表名对应、类中 成员变量与表中字段名对应、表中的一对多关系在类中表现为组合关系(一对多时在类中添加Set或者List集合,多对一时在类中添加相应的对象),如图所示(User与StockComment就是一对多的关系):



当类中存在TreeSet时需要实现Comparable接口并重写compareTo方法(方便TreeSet集合进行排序)。之后自动生成成员变量的Get和Set方法。

三、创建实体类对应的Dao

Dao中主要定义一些基本的数据库访问操作如CRUD,此处注意Dao只是接口,而不是类。而且在Mybati中Dao不需要用类实现,而是通过配置映射文件Mapping.xml来实现Dao接口。

public interface UserDao {
        /**
         * Select from t_user by userID
         * @param userID
         * @return
         */
        public User selectUserByID(int userID);

        /**
         * Select from t_user by userName
         * @param userName
         * @return
         */
        public User selectUserByName(String userName);

        /**
         * Insert a record in t_user 
         * @param user
         * @return
         */
        public int addUser(User user);

        /**
         * Update a record in t_user
         * @param user
         * @return
         */
        public int updateUser(User user);

        /**
         * Delete a record in t_user that dependents on the userID
         * @param userID
         * @return
         */
        public int deleteUserByID(int userID);
    }

四、配置Dao对应的实现UserMapping.xml

    <?xml version="1.0" encoding="UTF-8"?>    
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
    <mapper namespace="com.ustc.finance.dao.UserDao">  
        <resultMap type="com.ustc.finance.entity.User" id="userResultMap">
            <id column="userID" jdbcType="INTEGER" property="userID"/>
            <result column="userName" jdbcType="VARCHAR" property="userName"/>
            <result column="userPassword" jdbcType="VARCHAR" property="userPassword"/>
            <result column="userRealName" jdbcType="VARCHAR" property="userRealName"/>
            <result column="userEmail" jdbcType="VARCHAR" property="userEmail"/>
            <result column="userGender" jdbcType="VARCHAR" property="userGender"/>
            <result column="userFinance" jdbcType="DOUBLE" property="userFinance"/>
            <!-- 个股评论的一对多的关系 -->  
            <!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->  
            <collection property="stockComments" ofType="com.ustc.finance.entity.StockComment" 
            select="com.ustc.finance.dao.StockCommentDao.selectStockCommentByID" column="stockCommentID">
            </collection>
            <!-- 个股交易的一对多的关系 --> 
            <collection property="stockTransactions" ofType="com.ustc.finance.entity.StockTransaction"
             select="com.ustc.finance.dao.StockTransactionDao.selectStockTransactionByID" column="stockTransactionID"> 
            </collection>  
        </resultMap>

        <!-- 查询单条记录 -->
        <select id="selectUserByID" parameterType="int" resultMap="userResultMap">
            SELECT * FROM t_user 
            <where>
            <if test="_parameter !=null and _parameter != ''">
            AND userID = #{userID, jdbcType = INTEGER}
            </if>
            </where>
        </select>

        <!-- 通过用户名查询 -->
        <select id="selectUserByName" parameterType="java.lang.String" resultMap="userResultMap">
            SELECT * FROM t_user
            <where>
            <if test="_parameter !=null and _parameter != ''">
            AND userName = #{userName, jdbcType = VARCHAR}
            </if>
            </where>
        </select>
        <!-- 添加用户记录 -->
        <insert id="addUser" parameterType="com.ustc.finance.entity.User" useGeneratedKeys="true" keyProperty="userID">
            INSERT INTO t_user (userName, userPassword,  userRealName, userPhone, userEmail, userGender, userFinance) 
            VALUES (#{userName}, #{userPassword}, #{userRealName}, #{userPhone}, #{userEmail}, #{userGender}, #{userFinance})
        </insert>
        <!-- 更新用户记录 -->
        <update id="updateUser" parameterType="com.ustc.finance.entity.User">
            UPDATE t_user SET userName = #{userName}, userPassword = #{userPassword},
          userRealName = #{userRealName}, userPhone = #{userPhone}, userEmail = #{userEmail},
          userGender = #{userGender}, userFinance = #{userFinance} WHERE userID = #{userID}
          </update>

        <!-- 删除用户记录 -->
        <delete id="deleteUserByID" parameterType="int">
            DELETE FROM t_user WHERE userID = #{userID}
        </delete>
    </mapper>

五、创建Dao对应的Service

六、创建UserServiceImpl实现UserService接口

七、MyBatis与Spring配置文件

八、编写测试类

上一篇 下一篇

猜你喜欢

热点阅读