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

做娱乐网站需要哪些东莞企业网站推广

做娱乐网站需要哪些,东莞企业网站推广,黄页88成立时间,中学生做网站提示:写代码要严谨 文章目录 前言前期准备MyBatis CRUD操作流程增加功能删除功能修改功能查询功能#{} 占位符${} 占位符两种占位符的区别❗ 映射文件总结❗ mapper 代理方式实现CRUDmapper代理开发规范增加功能删除功能修改功能查询功能 前言 提示:myba…

提示:写代码要严谨

文章目录

  • 前言
  • 前期准备
  • MyBatis CRUD操作流程
    • 增加功能
    • 删除功能
    • 修改功能
    • 查询功能
      • #{} 占位符
      • ${} 占位符
      • 两种占位符的区别❗
    • 映射文件总结❗
  • mapper 代理方式实现CRUD
    • mapper代理开发规范
    • 增加功能
    • 删除功能
    • 修改功能
    • 查询功能


前言

提示:mybatis官网

MyBatis 代码最主要的是简化 dao 层代码

ORM思想
O:po类
R:关系,数据库
M:mapper,映射

前期准备

第一步:新建项目Maven项目
请添加图片描述
在下一步中勾选第一个选项,创建一个简单的项目,最后填写相关信息后完成
请添加图片描述

如果有需要导入的配置文件:
在这里插入图片描述
这样做的好处是:即便原有的配置文件被删掉也没事

第二步:

项目建成后在 pom.xml 文件中导入相关代码,比如:

缺什么加什么

    <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version><!-- <version>5.1.6</version> --></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- 使用log4j输出更多的日志信息 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><build><resources><resource><!--表示需要编译的源文件路径--><directory>src/main/java</directory><includes><!--表示以.properties和*.xml结尾的文件将进行编译--><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><!--表示需要编译的源文件路径--><directory>src/main/resources</directory><includes><!--表示以.properties和*.xml和.yml结尾的文件将进行编译--><include>**/*.properties</include><include>**/*.xml</include><include>**/*.yml</include></includes><filtering>false</filtering></resource></resources></build>

第三步:

在 main/resources 文件夹中创建 config.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name=""/></typeAliases><!-- 配置数据源相关属性 --><environments default="development"><!-- 可以配置多个数据源环境,默认使用default中的值 --><environment id="development"><!-- 使用jdbc的事务管理 --><transactionManager type="MANAGED" /><!-- 配置数据源,并使用自带数据库连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai" /><property name="username" value="root" /><property name="password" value="123456" /></dataSource></environment></environments><!-- 配置映射文件,可配置多个 --><mappers><!-- 指定映射文件路径,复制一下 --><mapper resource="" /><mapper resource="" /></mappers>
</configuration>

第四步:

在 main/resources 文件夹中还有个 log4j.properties 配置文件,可以显示 log 输出

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
log4j.rootLogger=debug,stdout

第五步:

在main/resources文件夹中新建映射文件 mapper.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=""></mapper>

第六步:在 test/java 文件夹下创建 test 测试类

import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class AppTest {private SqlSession session=null;@Beforepublic void before() throws Exception {InputStream input = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(input);session= ssf.openSession();}@Afterpublic void after() {session.close();} @Test public void test() {}}

第七步:

MySQL建表语句:

drop table  if exists emp;create table EMP
(EMPNO int primary key,ENAME varchar(20),JOB varchar(9),MGR int,HIREDATE date,SAL double,COMM double,DEPTNO int,foreign key (DEPTNO) references DEPT (DEPTNO)
);

提示:以下是本篇文章正文内容,下面案例可供参考

MyBatis CRUD操作流程

增加功能

在main/java文件夹中新建 po 包及类

public class Emp {private Integer empno;private String ename;private String job;private Integer mgr;private Date hiredate;private Double sal;private Double comm;private Integer Deptno;// 自动生成 Getter、Setter、toString()、有参无参方法
}

在main.resources文件夹中新建映射文件 mapper.xml

这里面写的就是SQL语句

parameterType里面的参数是:在 po 类中双击类的名字,右键复制限定名
在这里插入图片描述
SQL语句中的具体数据要写成#{}占位符的写法

大括号中的属性名要与 po 类中的名字一致(注意大小写),而 po 类中的名字要与数据库中的名字一致

<mapper namespace="emp"><!-- 方法名,			 参数 	      返回值(只有查询有) --><insert id="insertEmp" parameterType="com.mybatis.po.Emp">insert into emp values(#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{Deptno})</insert>
</mapper>

接下来在 config.xml 文件中增加配置文件

    <!-- 配置映射文件,可配置多个 --><mappers><!-- 指定映射文件路径,复制一下 --><mapper resource="EmpMapper.xml" /></mappers>

接下来就可以测试了,测试代码:

	@Test// insertEmp()起个名public void insertEmp() {Emp emp = new Emp(8988, "张三", "Java", 7790, new Date(2023, 10, 23), 10000.0, 99.0, 20);// "emp.insertEmp" → "namespace的值.insertEmp方法名是映射文件中的id"int i = session.insert("emp.insertEmp", emp);System.out.println(i);}

在这里插入图片描述

接下来右键该 test 类测试,点击运行方式 → JUnit测试
在这里插入图片描述

他会运行前面带@Test的方法
请添加图片描述

删除功能

#{} 占位符中的名字 如果参数是 po 类型,那么名字必须是属性名,如果参数是基本类型或String,那么参数名字自定义

映射文件代码:

	<delete id="deleteEmp" parameterType="int">delete from empwhere empno = #{随便起名}</delete>

测试类代码:

	@Testpublic void deleteEmp() { int i = session.delete("emp.deleteEmp",8966);System.out.println(i); }

修改功能

映射文件代码:

    <update id="updateEmp" parameterType="com.neuedu.mybatis.po.Emp">update emp set ename=#{ename},job=#{job},mgr=#{mgr},hiredate=#{hiredate},sal=#{sal},comm=#{comm},Deptno=#{Deptno}where empno = #{empno}</update>

测试类代码:

	@Testpublic void updateEmp() { Emp emp = new Emp(8988,"enen","java全栈",7790,new Date(2003, 10, 13), 11000.0, 999.0, 20);int i = session.update("emp.updateEmp",emp);System.out.println(i);}

查询功能

#{} 占位符

映射文件代码:

    <select id="queryEmps" parameterType="String" resultType="com.neuedu.mybatis.po.Emp">select * from emp where ename like concat('%',#{名字模糊查询},'%')</select> 

测试类代码:

	@Testpublic void queryEmp() {List<Emp> list = session.selectList("emp.queryEmps","T");for (Emp emp : list) {System.out.println(emp);}}

除了#{}外还有种占位符叫${},现在用的比较少

${} 占位符

映射文件代码:

    <select id="queryEmps" parameterType="String" resultType="com.neuedu.mybatis.po.Emp">select * from emp where empno like concat('%','${value}','%')</select>

测试类代码:

	@Test public void queryDept() {List<Dept> list = session.selectList("dept.queryDepts","O");for (Dept dept : list) {System.out.println(dept);}}

两种占位符的区别❗

${} 使用的是普通的 Statement 语句运行,运行效率低,采用的是SQL语句拼接的方式,可能发生SQL注入安全问题

#{} 使用的是 PreparedStatement 预编译语句,运行效率高,能够防止SQL注入,安全性高

映射文件总结❗

  1. 映射文件可以理解为dao类,里面写的就是SQL语句
  2. 映射文件中的 insert update delete select 标记,理解为dao类中的方法
  3. id 属性理解为方法名parameterType 属性理解为参数resultType 属性理解为方法返回值(增删改不需要配置,因为只能是 int 类型)
  4. SQL语句中的具体数据要写成#{}占位符的写法,#{属性名1},#{属性名2}
  5. #{} 占位符中的名字 如果参数是 po 类型,那么名字必须是属性名,如果参数是基本类型或字符串,那么参数名字自定义
  6. alt + / 是提示

mapper 代理方式实现CRUD

mapper代理开发规范

1.在同一个包中新建一个接口和与之同名的映射文件
2.映射文件的namespace必须是接口的限定名
3.映射文件中语句id必须和接口中方法名一致
4.映射文件中语句parameterType必须和接口中方法参数一致
5.映射文件中语句resultType必须和接口中方法返回值类型一致


一个 mapper.xml 对应一个 mapper.java 接口,接口的实现类由MyBatis 自动生成

在数据库中新建客户表

drop table  if exists cust;CREATE TABLE cust (id INT PRIMARY KEY auto_increment,    # id自增name VARCHAR(50) NOT NULL,    # 姓名phone VARCHAR(20),      # 电话birthday DATE,          # 出生日期balance DOUBLE          # 余额
);
INSERT INTO cust (id, name, phone, birthday, balance) VALUES (1, '张三', '13611111111', '1990-01-01', 1000.00);INSERT INTO cust (id, name, phone, birthday, balance) VALUES (2, '李四', '13722222222', '1995-02-02', 2000.00);INSERT INTO cust (id, name, phone, birthday, balance) VALUES (3, '王五', '13833333333', '1985-03-03', 3000.00);

main/java内新建 po 包及其Java类

public class Cust {private Integer id;private String name;private String phone;private Date birthday;private double balance;// 自动生成 Getter、Setter、toString()、有参无参方法
}

接着在main/java内新建Cust 接口及 .xml 文件

在CustMapper.xml 文件中,namespace是接口的限定名

<mapper namespace="com.mybatis.mapper.CustMapper">

在mybatis-config.xml文件中的配置:

	<!-- 1.package name是po包的限定名 --><typeAliases><package name="com.mybatis.po"/></typeAliases><!-- 中间代码省略 --><!-- 2.配置映射文件,可配置多个 --><mappers><!-- 指定映射文件包(mapper包) 的限定名,复制一下 --><package name="com.mybatis.mapper"/></mappers>

增加功能

首先在接口中定义方法:

	int insertCust(Cust cust);

Customers.xml 文件代码:

   <insert id="insertCust" parameterType="Cust">	insert into cust(id,name,phone,birthday,balance)values (#{id},#{name},#{phone},#{birthday},#{balance})</insert> 

测试代码:

	@Testpublic void insertCust() {// 得到mapper接口实现类对象CustMapper mapper = session.getMapper(CustMapper.class);// 主键是自增的,所以id可以为空Cust cust = new Cust(null,"张三", "15794612345", new Date(2003-8-03),20.5);// 调用接口中定义的方法int i = mapper.insertCust(cust);System.out.println(i);}

在这里插入图片描述
增加后怎么拿到主键呢?

在映射文件中:加上查询主键值

   <insert id="insertCust" parameterType="Cust"><!-- 获得自动递增的主键值 --><selectKey keyProperty="id" resultType="int" order="AFTER"><!-- 查一个虚表,最后一次插入的值 先执行增加的sql语句,再执行查询,获取插入的主键值,然后赋值给keyProperty的id	-->select last_insert_id() from dual</selectKey>	insert into cust(id,name,phone,birthday,balance)values (#{id},#{name},#{phone},#{birthday},#{balance})</insert> 

测试代码加上:

System.out.println("增加的主键值是:"+cust.getId());

在这里插入图片描述

删除功能

首先在接口中定义方法:

int deleteCust(int id);

映射文件 CustMapper.xml 中:

   <delete id="deleteCust" parameterType="int">delete from custwhere id = #{int类型随便起名}</delete>

测试代码:

	@Testpublic void deleteCustomers() {CustMapper mapper = session.getMapper(CustMapper.class);int i = mapper.deleteCust(3);System.out.println(i);}

在这里插入图片描述

修改功能

首先在接口中定义方法:

	int updateCust(Cust cust);	

映射文件 CustMapper.xml 中:

   <update id="updateCust" parameterType="Cust">update custset name = #{name}, phone = #{phone}, birthday = #{birthday}, balance = #{balance}where id = #{id}</update>

测试代码:

	@Testpublic void updateCust() {CustMapper mapper = session.getMapper(CustMapper.class);Cust cust = new Cust(5,"李四", "15846012345", new Date(2013-8-03),1320.5);int i = mapper.updateCust(cust);System.out.println(i);}

在这里插入图片描述

查询功能

首先在接口中定义方法:

	// id查询Cust queryCustById(int id);// 名字和电话的模糊查询List<Cust> queryCusts(Cust cust);

映射文件 CustMapper.xml 中:

   <select id="queryCustById" parameterType="int" resultType="Cust">select * from custwhere id = #{随便起名}</select><select id="queryCusts" parameterType="Cust" resultType="Cust">select * from custwhere name like concat('%',#{name},'%')and phone like concat('%',#{phone},'%')</select>

测试代码:

	@Testpublic void query() {CustMapper mapper = session.getMapper(CustMapper.class);		mapper.queryCustById(6);Cust cust = new Cust(null,"四", "2345", null,130020.5);mapper.queryCusts(cust);}

重点看控制台输出语句是否正确
在这里插入图片描述

http://www.wooajung.com/news/27770.html

相关文章:

  • 长沙公司做网站的价格西安百度seo排名
  • 普陀区网站建设南京百度推广优化
  • 淘客网站cms怎么做seo最新快速排名
  • 广告公司简介100字seo推广价格
  • 哪一个网站有做实验的过程网站查询网
  • 什么网站可以发布有偿做项目西安网
  • 佛山网站制作哪个好薇成都网络营销
  • 无锡网站怎么做广州seo实战培训
  • 网站建设与应用教案市场营销网络
  • 一个域名一个主机可以做两个网站吗上海野猪seo
  • 兼职 做网站长沙seo关键词
  • 信融科技做网站推广可靠吗一键优化大师
  • 国外免费服务器申请seo运营培训
  • 重庆企业服务建站网站开发佛山网站建设技术托管
  • wordpress网站被劫持重定向seo快速排名是什么
  • 做网站优化需要多少钱网站优化外包价格
  • 网站建设 销售提成阿里云万网域名查询
  • 东莞网站优化方案海南百度推广公司有哪些
  • 深圳 网站设计营销推广公司
  • 网站制作 需要什么网络技术百度搜索风云榜排行榜
  • 网站建站行业公司主页建设天津百度推广网络科技公司
  • 做纸巾定制的网站新闻早知道
  • 网站建设技术手段南京百度网站快速优化
  • 网站建设与管理课程心得体会中文网站排名
  • flash做网站通栏每日新闻快报
  • 昆明网站做定制网站开发
  • 拍卖网站制作微信公众号营销
  • 网站扫描怎么做百度搜索引擎的网址是多少
  • 沈阳商城网站建设seo教学网站
  • 源码网站大淘客cms外包