当前位置: 首页 > news >正文

阿里云网站建设 部署与发布答案网络营销的宏观环境

阿里云网站建设 部署与发布答案,网络营销的宏观环境,微信小程序平台登陆,查看网站的收录量可以用哪个查询命令Mybatis 文章目录 Mybatis搭建环境创建Maven工程将数据库中的表转换为对应的实体类配置文件核心配置文件mybatis-config.xml创建Mapper接口映射文件xxxMapper.xmllog4j日志功能 Mybatis操纵数据库示例及要点说明获取参数的两种方式${}#{} 各种类型的参数处理单个字面量参数多个…

Mybatis

文章目录

  • Mybatis
    • 搭建环境
      • 创建Maven工程
      • 将数据库中的表转换为对应的实体类
      • 配置文件
        • 核心配置文件==mybatis-config.xml==
        • 创建Mapper接口
        • 映射文件==xxxMapper.xml==
        • log4j日志功能
    • Mybatis操纵数据库
      • 示例及要点说明
      • 获取参数的两种方式
        • ==${}==
        • ==#{}==
      • 各种类型的参数处理
        • 单个字面量参数
        • 多个字面量参数
        • map集合类型的参数
        • 实体类类型的参数
        • 通过==@Param==注解(常用)
      • Mybatis的各种查询功能
        • 查询一条数据为实体类对象
        • 查询多条数据为一个list集合
        • 查询单个数据
        • 查询一条数据为Map集合
        • 查询多条数据为Map集合
      • 特殊SQL的执行
        • 模糊查询
        • 批量删除
        • 动态设置表名
        • 添加功能获取自增的主键
      • 自定义映射resultMap
        • 多对一
        • 一对多

搭建环境

创建Maven工程

  • 打包模式更改为jar包,因为mybatis只是封装了jdbc,不需要使用Tomcat
  • pom.xml导入依赖(mybatis的核心驱动+Mysql驱动+junit测试)
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>MyBaits</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>MyBaits</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency></dependencies></project>

将数据库中的表转换为对应的实体类

在这里插入图片描述

User实体类
package com.zhnx.demo1.pojo;
import lombok.Data;
/*** ssm.t_user*/
@Data
public class User {private Integer id;private String username;private String password;private Integer age;private String gender;private String email;public User() {}public User(Integer id, String username, String password, Integer age, String gender, String email) {this.id = id;this.username = username;this.password = password;this.age = age;this.gender = gender;this.email = email;}
}

补充:使用@Data注解需要在pom.xml中配置lombok的依赖

lombok依赖<!-- lombok,简化实体类--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version><scope>compile</scope></dependency>

配置文件

核心配置文件mybatis-config.xml

核心配置文件主要功能,与数据库和映射文件进行绑定

  • 存放位置:src/main/resources
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- Mybatis 核心配置文件,标签的顺序properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?--><!--引入properties文件,然后才可以在当前文件中使用的方式访问 --><!-- ”jdbc.properties“ 的文件名 --><properties resource="jdbc.properties"/><!--设置类型别名 --><typeAliases><!-- 比较 好的方式就是以包为单位,将报下所有的类型设置成默认的类型别名,类名不区分大小写 --><!-- 类所在包的全类名:com.zhnx.mybatis.pojo--><package name="com.zhnx.demo1.pojo"/></typeAliases><!--设置连接数据库的环境--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!-- 设置数据库连接的驱动 ${jdbc.driver}--><property name="driver" value="${jdbc.driver}"/><!-- 设置数据库的连接地址  ${jdbc.url}--><property name="url" value="${jdbc.url}"/><!-- 设置连接数据库的用户名  ${jdbc.username}--><property name="username" value="${jdbc.username}"/><!-- 设置连接数据库的密码  ${jdbc.password}--><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--引入映射文件--><mappers>
<!--        <mapper resource="mappers/UserMapper.xml"/>--><!--        这种方式一定要保证mapper接口和映射文件在同一个目录下--><package name="com.zhnx.demo1.mapper"/></mappers>
</configuration>

创建Mapper接口

package com.zhnx.demo1.mapper;
import com.zhnx.demo1.pojo.User;public interface UserMapper {/*** 根据用户名查询用户信息* @param name* @return*/User getUserByUsername(String name);
}

映射文件xxxMapper.xml

在映射文件中写SQL语句,操作数据库

  • 一个映射文件对应一个实体类,一张表
  • mapper接口的全类名和映射文件的namespace要一致
  • Mapper接口中的方法名需要和映射文件中的SQL语句的id保持一致
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace = ”当前接口的全类名“ 如com.zhnx.mybatis.mapper.UserMapper-->
<mapper namespace="com.zhnx.demo1.mapper.UserMapper"><!--mapper接口和映射文件要保持两个一致1、mapper接口的全类名和映射文件的namespace一致2、mapper接口中的方法的方法名要和映射设文件中的sql的id保持一致--><!--     int insertUser();--><insert id="insertUser">insert into t_user values (null,'admin','00000000',23,'男','admin000.qq.com');</insert></mapper>

log4j日志功能

在pom.xml中加入log4j的依赖

    <!-- log4j日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>

Mybatis操纵数据库

示例及要点说明

eg:

1、在UserMapper接口中新增方法

public interface UserMapper{User selectUser();
}

2、在UserMapper.xml中配置SQL语句等

<select id="selectUser" resultType="User">select * from t_user where id = 1;
</select>
  • resultType:设置返回的结果类型,就是查询得到数据转换成的对应的Java类型(全类名)

    • 可以在核心配置文件中使用标签设置类型别名

    • <!--设置类型别名 -->
      <typeAliases><!-- 比较 好的方式就是以包为单位,将包下所有的类型设置成默认的类型别名,类名不区分大小写 --><package name="com.zhnx.demo1.pojo"/>
      </typeAliases>
      
  • resultMap:自定义映射处理多对一或者一对多映射关系

获取参数的两种方式

${}

  • 字符串拼接

  • 注意添加单引号

#{}

  • 占位符赋值

  • 不需要添加单引号

  • 可以防止SQL注入

各种类型的参数处理

单个字面量参数

${}和#{}都可以,以任意键值就可以获取参数值

需要注意的是,${}需要手动添加单引号

多个字面量参数

不可以使用#{username}、#{password}的方式

因为 因为当mapper接口中的方法参数为多个时,此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1…或param1,param2…为键,以参数为值

所以,多个字面量参数的处理方式应该为==#{arg0}…或‘${arg0}’==…

map集合类型的参数

这种参数可以直接#{==map键值对的键==值}

  • eg:#{username}

实体类类型的参数

这种参数可以直接==通过实体类的属性名==获取属性值

  • eg:#{username}

通过==@Param==注解(常用)

  • User getUserByUsername(==@param(“name”)==String name);
  • 以注解的value属性值为键和Param1、Param2…为键
  • eg:#{name}

Mybatis的各种查询功能

查询一条数据为实体类对象

  • resultType=“User”

查询多条数据为一个list集合

  • resultType=“User”

查询单个数据

  • resultType=“integer/int/Int/Integer/_integer”(类型别名不区分大小写)

查询一条数据为Map集合

  • resultType=“map”

查询多条数据为Map集合

  • resultType=“map”
* 查询出来的多个Map集合统一放在list集合中  ** List<Map<String, Object>> getAllUserToMap();** 查询结果: {password=123456, sex=, id=1, age=23, username=admin}
* 查询出来的多个Map集合放在Map集合中(Map中嵌套Map** 使用@MapKey("id")为外层的Map集合指定键值** @MapKey("id")Map<String, Object> getAllUserToMap();** 查询结果:{1={password=123456, sex=, id=1, age=23, username=admin},2={password=123456, sex=, id=2, age=23, username=张三},3={password=123456, sex=, id=3, age=23, username=张三}}

特殊SQL的执行

模糊查询

  • LIKE ‘abc%’

    • _ LIKE ‘_${mohu}%’
    • LIKE concat(‘%’,#{mohu},‘%’)
    • LIKE “%”#{mohu}“%”
  • 具体情况根据SQL语句来判断

批量删除

  • delete from t_user where id in (${ids})

动态设置表名

  • select * from ${tableName}

添加功能获取自增的主键

//useGeneratedKeys=“true”
//keyProperty="id"
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">insert into t_user values(null,#{username},#{password},#{age},#{sex})</insert

自定义映射resultMap

//resultMap标签的和其中属性的详解
<!-- resultMap:设置自定义映射属性:id:表示自定义映射的唯一标识type:查询的数据要映射的实体类的类型子标签:id:设置主键的映射关系result:设置普通字段的映射关系association:设置多对一的映射关系collection:设置一对多的映射关系属性:property:设置映射关系中实体类中的属性名column:设置映射关系中表中的字段名--><!--简单例子 --!>
<resultMap id="userMap" type="User"><id property="id" column="id"></id><result property="userName" column="user_name"></result><result property="password" column="password"></result><result property="age" column="age"></result><result property="sex" column="sex"></result></resultMap><select id="selectUser" resultMap="userMap">select * from user;<select>

多对一

例子:实体类中还有实体类

  • 级联:使用 “类名.字段名” 的方式进行映射

    • <resultMap id="empDeptMap" type="Emp"> <id column="eid" property="eid"></id> <result column="ename" property="ename"></result><result column="age" property="age"></result><result column="sex" property="sex"></result><result column="did" property="dept.did"></result><result column="dname" property="dept.dname"></result></resultMap>
      
  • association

    • <resultMap id="empDeptMap" type="Emp"><id column="eid" property="eid"></id><result column="ename" property="ename"></result><result column="age" property="age"></result><result column="sex" property="sex"></result><association property="dept" javaType="Dept"><id column="did" property="did"></id><result column="dname" property="dname"></result></association></resultMap>
      

一对多

例子:实体类中有集合

  • collection

    • <resultMap id="deptEmpMap" type="Dept"><id property="did" column="did"></id><result property="dname" column="dname"></result><collection property="emps" ofType="Emp"><id property="eid" column="eid"></id><result property="ename" column="ename"></result><result property="age" column="age"></result><result property="sex" column="sex"></result></collection></resultMap>
      
http://www.hengruixuexiao.com/news/21734.html

相关文章:

  • seo建站优化推广陕西seo快速排名
  • 客户网站建设完成后需要什么seo优化技术培训
  • 网站建设项目海南百度竞价推广
  • 人民日报客户端的视频怎么下载seo免费
  • 做系统那个网站好黑龙江网络推广好做吗
  • 爱站网功能杭州网络整合营销公司
  • 易语言如何做验证系统官方网站推广软件赚钱
  • 做网站买完域名还需要什么seo排名快速刷
  • 网站做适配手机要多久济南seo整站优化价格
  • 企划做网站临沂头条新闻今日头条
  • 优秀品牌网站案例分析做一个app软件大概要多少钱
  • wordpress中文说明书短视频seo优化排名
  • 宁波育才建设教育集团网站武汉百度关键词推广
  • 济南建设网站需要网络营销是什么工作
  • 网站建设要托管服务器深圳seo关键词优化外包公司
  • 电子商务网站建设指导书俄国搜索引擎yandex入口
  • 免费创网站深圳营销型网站
  • 宝安做棋牌网站建设找哪家效益快成功的网络营销案例及分析
  • 石家庄网站制作网页seo实战密码第三版pdf
  • 网站建设 软件有哪些做直销去哪里找客户
  • 烟台网站制作公司哪家好百度客服中心人工在线
  • 怎么用dw设计网站页面seo整站优化一年价格多少
  • 深圳 商城 网站建设中国市场营销网网站
  • 建网站价格 优帮云网站建站推广
  • 厦门有没有做网站的平台推广引流怎么做
  • 在个人网站上做电商营业执照站内seo内容优化包括
  • 怎么对网站上的游记做数据分析seo技术培训茂名
  • 家政公司注册的需要哪些条件朝阳seo推广
  • 哪里有国内网站建设公司南京百度网站推广
  • 网站开发费用包括美工费吗关键词优化的五个步骤