A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天要大家掌握的是,Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);

10 个回复

倒序浏览
Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:
        Mybatis的crud操作:
                dao层接口:定义一个操作方法名的抽象类,指定返回值和参数;
                映射文件配置:
                        标签:查询(select)、添加(insert)、修改(update)、删除(delete);
                                id:指定方法名
                                paramterType:指定参数类型,如果没有就不写;
                                resultType:指定返回值类型,如果没有就不写;
                        sql语句:定义相应的SQL语句;
                                参数占位符格式:#{ 要保存的属性名 }(等同于占位符:?);
                测试类:
                        如果传递的参数是实体类,需要创建实体类,并定义响应的数据;
                        读取配置文件信息,获取字节流;
                        传递字节流,获取工厂对象;
                        创建session对象;
                        获取代理对象;
                        执行带对象的方法,并传递参数;
                        如果增删改方法,需要进行事务结束操作--session.commit()
                        释放资源;

        Mybatis中返回值参数:resultType
                实体类:
                        无别名:写相应实体类的全限定类名;
                        有别名:直接写别名,不区分大小写;
                单个数据:可以写该数据的基本类型、也可以写包装类名,不区分大小写;

        标签:
                properties:
                        作用:引入properties配置文件(数据库连接信息),起到解耦作用;
                        属性:
                                resource:配置文件的路径(直接写配置文件名即可);
                                url:同resource(路径要包括协议、主机IP、端口号和uri);
                typeAliases:
                        作用:给domain下的实体类配置别名;
                        标签:
                                typeAlias(单个配置)
                                        type:实体类的全限定类名;
                                        alias:实体类的别名;
                                package(批量配置)
                                        name:domain包的全限定路径(自动给domain包下的实体类定义别名,其类名就是别名)
                package:
                        作用:批量扫描,会自动指定dao下的所有接口和映射配置文件;
                        属性:name:dao包的全限定路径名;
回复 使用道具 举报

Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:
        Mybatis的crud操作:
                dao层接口:定义一个操作方法名的抽象类,指定返回值和参数;
                映射文件配置:
                        标签:查询(select)、添加(insert)、修改(update)、删除(delete);
                                id:指定方法名
                                paramterType:指定参数类型,如果没有就不写;
                                resultType:指定返回值类型,如果没有就不写;
                        sql语句:定义相应的SQL语句;
                                参数占位符格式:#{ 要保存的属性名 }(等同于占位符:?);
                测试类:
                        如果传递的参数是实体类,需要创建实体类,并定义响应的数据;
                        读取配置文件信息,获取字节流;
                        传递字节流,获取工厂对象;
                        创建session对象;
                        获取代理对象;
                        执行带对象的方法,并传递参数;
                        如果增删改方法,需要进行事务结束操作--session.commit()
                        释放资源;

        Mybatis中返回值参数:resultType
                实体类:
                        无别名:写相应实体类的全限定类名;
                        有别名:直接写别名,不区分大小写;
                单个数据:可以写该数据的基本类型、也可以写包装类名,不区分大小写;

        标签:
                properties:
                        作用:引入properties配置文件(数据库连接信息),起到解耦作用;
                        属性:
                                resource:配置文件的路径(直接写配置文件名即可);
                                url:同resource(路径要包括协议、主机IP、端口号和uri);
                typeAliases:
                        作用:给domain下的实体类配置别名;
                        标签:
                                typeAlias(单个配置)
                                        type:实体类的全限定类名;
                                        alias:实体类的别名;
                                package(批量配置)
                                        name:domain包的全限定路径(自动给domain包下的实体类定义别名,其类名就是别名)
                package:
                        作用:批量扫描,会自动指定dao下的所有接口和映射配置文件;
                        属性:name:dao包的全限定路径名;
回复 使用道具 举报
今天要大家掌握的是,Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
<!-- 保存用户 -->
     <insert id="saveUser" parameterType="user">
        insert into user(username,address,sex,birthday)values(#{userName},#{userAddress},#{userSex},#{userBirthday});
     </insert>

<!-- 更新用户 -->
    <update id="updateUser" parameterType="USER">
        update user set username=#{userName},address=#{userAddress},sex=#{userSex},birthday=#{userBirthday} where id=#{userId}
    </update>

<!-- 删除用户-->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{uid}
    </delete>

<!-- 根据id查询用户 -->
    <select id="findById" parameterType="INT" resultMap="userMap">
        select * from user where id = #{uid}
    </select>

properties:可以在标签内部配置连接数据库的信息。也可以通过属性引用外部配置文件信息
typeAliases:配置别名
package:<typeAliases>中的package用于配置别名的包,当指定之后,该包下的实体类都会注册别名          
         <mappers>中的package用于指定dao接口所在的包


回复 使用道具 举报
Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:crud操作及其返回值参数:
查:使用select标签,返回值参数为一般为实体类,若果是模糊匹配查询,like后的sql语句有两种拼接方式,#{}表示一个占位符,传入的参数需要加%,${}表示拼接sql串,可以在语句中直接拼接%,这样传入的参数不需要加%,但是${}括号中只能是value。
增:使用insert标签,传入的参数类型一般是实体类,返回值为操作成功影响的行数。在插入数据的方法中使用 <selectKey keyColumn="id" keyProperty="id" resultType="int" >标签可以获取数据库自动生成的id值。
改:使用update标签,传入的参数一般为实体类,返回值为操作成功影响的行数。
删:使用delete标签,传入的参数一般是id的int值,返回值为操作成功影响的行数。
标签的使用:
<!-- 引入properties文件 -->
<properties resource="jdbcConfig.properties"></properties>
<!-- 批量别名定义,扫描整个包下的类,别名为类名 -->
<typeAliases>
     <package name="domain"></package>
</typeAliases>
<!-- 注册指定包下的所有mapper接口(xml文件) -->
<mappers>
    <package name="dao"></package>
</mappers>
回复 使用道具 举报
1/在configuration标签下定义properties标签的resource通过属性引用外部数据库配置文件信息.需要在下方property标签中的value改成${...}

2/定义类名别名typeAliases给domain包下的所有文件起别名.

3/在配置映射文件的位置mapper标签下定义一个package标签,扫描配置dao包下的所有文件别名.
回复 使用道具 举报

Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:crud操作及其返回值参数:
查:使用select标签,返回值参数为一般为实体类,若果是模糊匹配查询,like后的sql语句有两种拼接方式,#{}表示一个占位符,传入的参数需要加%,${}表示拼接sql串,可以在语句中直接拼接%,这样传入的参数不需要加%,但是${}括号中只能是value。
增:使用insert标签,传入的参数类型一般是实体类,返回值为操作成功影响的行数。在插入数据的方法中使用 <selectKey keyColumn="id" keyProperty="id" resultType="int" >标签可以获取数据库自动生成的id值。
改:使用update标签,传入的参数一般为实体类,返回值为操作成功影响的行数。
删:使用delete标签,传入的参数一般是id的int值,返回值为操作成功影响的行数。
标签的使用:
<!-- 引入properties文件 -->
<properties resource="jdbcConfig.properties"></properties>
<!-- 批量别名定义,扫描整个包下的类,别名为类名 -->
<typeAliases>
     <package name="domain"></package>
</typeAliases>
<!-- 注册指定包下的所有mapper接口(xml文件) -->
<mappers>
    <package name="dao"></package>
</mappers>
回复 使用道具 举报

Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:crud操作及其返回值参数:
查:使用select标签,返回值参数为一般为实体类,若果是模糊匹配查询,like后的sql语句有两种拼接方式,#{}表示一个占位符,传入的参数需要加%,${}表示拼接sql串,可以在语句中直接拼接%,这样传入的参数不需要加%,但是${}括号中只能是value。
增:使用insert标签,传入的参数类型一般是实体类,返回值为操作成功影响的行数。在插入数据的方法中使用 <selectKey keyColumn="id" keyProperty="id" resultType="int" >标签可以获取数据库自动生成的id值。
改:使用update标签,传入的参数一般为实体类,返回值为操作成功影响的行数。
删:使用delete标签,传入的参数一般是id的int值,返回值为操作成功影响的行数。
标签的使用:
<!-- 引入properties文件 -->
<properties resource="jdbcConfig.properties"></properties>
<!-- 批量别名定义,扫描整个包下的类,别名为类名 -->
<typeAliases>
     <package name="domain"></package>
</typeAliases>
<!-- 注册指定包下的所有mapper接口(xml文件) -->
<mappers>
    <package name="dao"></package>
</mappers>
回复 使用道具 举报
今天要大家掌握的是,Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
基于代理Dao实现CRUD操作:
注意事项:持久层接口和其映射配置必须在相同的包下,映射配置中的mapper标签的namespace属性值必须是持久层接口的全限定类名,
sql语句的配置标签的id属性必须和持久层接口的方法名相同
步奏:
1.在持久层接口中添加方法
2.在用户的映射配置文件中配置:
  <mapper namespace="表明哪里的dao接口方法">
  <select id="id是方法名称" resultType="返回值结果类型" parameterType="传入参数的类型">sql语句</select>
  sql语句中的#{}表示占位符具体数据是有括号里的内容决定
3.在测试类中添加测试:@Before标签表示先执行 @After标签表示后执行
注意:增删改时候要去控制事物的提交:使用session.commit()提交在释放资源之前提交
4.细节:在新增用户的同时要获取新增用户的id的返回值:在配置sql标签中增加一个标签:
  <selectKey keyColumn="数据库id" keyProperty="实体类id" resultType="int">
     select last_insert_id()</selectKey>
5.细节:模糊查询除了select * from user where username like #{username}外
        还有一种配置方式:select * from user where username like '%${value}%'把#{}改成${value}
       
Mybatis中返回值参数以及标签的使用:
SqlMapConfig.xml配置文件配置文件的内容和顺序:
-properties(属性) 可以采用两种方式制定属性配置:
        第一种:<properties>
                                <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
                                <property name="jdbc.url" value="jdbc:mysql://localhost:3306/数据库"/>
                                <property name="jdbc.username" value="用户"/>
                                <property name="jdbc.password" value="密码"/>
                        </properties>
        第二种:在resources下定义properties配置文件
                        <properties resource="jdbcConfig.properties"></properties>
                        properties文件:
                        jdbc.driver=com.mysql.jdbc.Driver
                        jdbc.url=jdbc:mysql://localhost:3306/数据库
                        jdbc.username=用户
                        jdbc.password=密码
-settings(全局配置参数)
-typeAliases(类型别名)
                !--使用typeAliases配置别名,它只能配置domain中类的别名 -->
                <typeAliases>
                        <package name="com.itheima.domain"></package>
                </typeAliases>
-typeHandlers(类型处理器)
-objectFactory(对象工厂)
-plugins(插件)
-environments(环境集合属性对象)
        -environment(环境子属性对象)
                --transactionManager(事物管理)
                        ---dataSource(数据源)
-mappers(映射器)
        --mapper
                --package
回复 使用道具 举报
今天要大家掌握的是,Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:1.实体类的属性名和数据库中对应表中的列名尽量保持一致,这样可以省却额外的麻烦和可能的错误。如果不一致,则需要在主配置文件SqlMapConfig.xml中配置<resultMap>标签,将其一一对应。
       2.使用<properties>标签加载sql配置信息时,要将<dataSource>标签下的<property>的value属性设置成${jdbc:***}格式,这样{}内的参数会从sql配置文件中找到对应的。
       3. 使用<typeAliases>配置别名,只能配置domain中类的别名。<package name="com.itheima.domain"></package>这样配置之后,domain包下的所有类都配置了别名,别名就是类名,并且忽略大小写。
       4.配置别名后,当且仅当dao目录下的所有dao接口中只存在一个方法名为***(如findTotal)则可以如下调用:session.selectList("findTotal"),即参数statement可以只写方法名(即id)。
       5.在<insert>标签中插入<selectKey>标签,标签体中的sql语句为“selectlast_insert_id()”,则可以在插入语句执行之后返回刚插入那条记录的id,并且给对应对象的id属性赋值。
       6.占位符#{}只能在sql语句中使用,它将传入的数据都当成一个字符串,会对自动传入的数据加一个引号,因此需要在模糊查询传入参数时传入%号,如%王%解析为‘%王%’。
        而${}的应用范围更广。在sql语句中它将传入的数据直接显示生成在sql中。如:order by ${user_id},如果传入的值是111,那么解析成sql时的值为order by 111,  如果传入的值是id,则解析成的sql为order by id.
       #{}方式可以防止sql注入,而${}方式无法防止sql注入,因此一般情况在sql语句中尽量选择用#{}方式。
回复 使用道具 举报
陈鹏涛
Mybatis的crud操作,Mybatis中返回值参数以及标签的使用(properties,typeAliases,package);
答:
        Mybatis的crud操作:
                dao层接口:定义一个操作方法名的抽象类,指定返回值和参数;
                映射文件配置:
                        标签:查询(select)、添加(insert)、修改(update)、删除(delete);
                                id:指定方法名
                                paramterType:指定参数类型,如果没有就不写;
                                resultType:指定返回值类型,如果没有就不写;
                        sql语句:定义相应的SQL语句;
                                参数占位符格式:#{ 要保存的属性名 }(等同于占位符:?);
                测试类:
                        如果传递的参数是实体类,需要创建实体类,并定义响应的数据;
                        读取配置文件信息,获取字节流;
                        传递字节流,获取工厂对象;
                        创建session对象;
                        获取代理对象;
                        执行带对象的方法,并传递参数;
                        如果增删改方法,需要进行事务结束操作--session.commit()
                        释放资源;

        Mybatis中返回值参数:resultType
                实体类:
                        无别名:写相应实体类的全限定类名;
                        有别名:直接写别名,不区分大小写;
                单个数据:可以写该数据的基本类型、也可以写包装类名,不区分大小写;

        标签:
                properties:
                        作用:引入properties配置文件(数据库连接信息),起到解耦作用;
                        属性:
                                resource:配置文件的路径(直接写配置文件名即可);
                                url:同resource(路径要包括协议、主机IP、端口号和uri);
                typeAliases:
                        作用:给domain下的实体类配置别名;
                        标签:
                                typeAlias(单个配置)
                                        type:实体类的全限定类名;
                                        alias:实体类的别名;
                                package(批量配置)
                                        name:domain包的全限定路径(自动给domain包下的实体类定义别名,其类名就是别名)
                package:
                        作用:批量扫描,会自动指定dao下的所有接口和映射配置文件;
                        属性:name:dao包的全限定路径名;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马