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

改版百度不收录网站网络设计方案ppt

改版百度不收录网站,网络设计方案ppt,商融建设集团有限公司网站,建设银行怎么在网站设置限额MyBatis 前言MyBatis简介MyBatis快速上手Mapper代理开发增删改查环境准备配置文件完成增删改查查询添加修改删除 参数传递注解完成增删改查 前言 JavaWeb JavaWeb是用Java技术来解决相关Web互联网领域的技术栈。 MySQL数据库与SQL语言 MySQL#xff1a;开源的中小型数据库。… MyBatis 前言MyBatis简介MyBatis快速上手Mapper代理开发增删改查环境准备配置文件完成增删改查查询添加修改删除 参数传递注解完成增删改查 前言 JavaWeb JavaWeb是用Java技术来解决相关Web互联网领域的技术栈。 MySQL数据库与SQL语言 MySQL开源的中小型数据库。 MySQL登录进入bin文件目录下以管理员身份cmd进去net start mysql启动MySQL服务net stop mysql停止服务mysql -uroot -p进入登录页面exit或者quit退出MySQL界面。 MySQL是一种关系型数据库管理软件关系型数据库是建立在关系模型基础上的数据库简单来说关系型数据库是由多张能相互连接的二维表组成的数据库。 MyBatis简介 MyBatis是一款优秀的持久层框架用于简化JDBC开发。 MyBatis免除几乎所有的JDBC代码以及设置参数和获取结果集的工作。 持久层 持久层是负责将数据保存到数据库的的那一层代码。JavaEE三层架构表现层页面展示、业务层逻辑处理、持久层数据持久化。 MyBatis快速上手 需求 描述查询user表中所有数据 步骤 1.创建user表添加数据 2.创建模块导入坐标 如果使用 Maven 来构建项目则需将下面的依赖代码置于 pom.xml 文件中 !--mybatis依赖-- dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversionx.x.x/version /dependency参考文档MyBatis中文网 除了mybatis依赖还需要mysql驱动、junit单元测试等坐标信息 !--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!--mysql驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.46/version/dependency!--junit 单元测试--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13/versionscopetest/scope/dependency!--添加slf4j日志api--dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.20/version/dependency!--添加logback-classic依赖--dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.3/version/dependency!--添加logback-core依赖--dependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactIdversion1.2.3/version/dependency并在resources资源文件下导入logback.xml文件 ?xml version1.0 encodingUTF-8? configuration!--CONSOLE 表示当前的日志信息是可以输出到控制台的。--appender nameConsole classch.qos.logback.core.ConsoleAppenderencoderpattern[%level] %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n/pattern/encoder/appenderlogger namecom.wmy levelDEBUG additivityfalseappender-ref refConsole//logger!--level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF 默认debugroot可以包含零个或多个appender-ref元素标识这个输出位置将会被本日志级别控制。--root levelDEBUGappender-ref refConsole//root /configuration3.编写MyBatis核心配置文件 -- 替换连接信息解决硬编码问题 /resources/mybatis-config.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLED!--数据库连接信息--property namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment/environmentsmappers!--加载当前sql映射文件的路径 看下一步 替换为UserMapper.xml--mapper resourceorg/mybatis/example/BlogMapper.xml//mappers /configuration4.编写SQL映射文件 -- 统一管理sql语句解决硬编码问题 /resources/com.wmy.Mapper/UserMapper.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd !--namespace:名称空间 -- mapper namespacetest!--查询语句 id是唯一标识 resultType是返回类型 也就是User类 需要创建在pojo文件夹下的User类 里边的属性要和数据表中的对应--select idselectAll resultTypecom.wmy.reggie.pojo.Userselect * from tb_user;/select /mapper5.编码 1定义POJO类 /java/com.wmy.pojo/User.java public class User {private Integer id;private String username;private String password;private String gender;private String addr;public void setId(Integer id) {this.id id;}public void setUsername(String username) {this.username username;}public void setPassword(String password) {this.password password;}public void setGender(String gender) {this.gender gender;}public void setAddr(String addr) {this.addr addr;}public Integer getId() {return id;}public String getUsername() {return username;}public String getPassword() {return password;}public String getGender() {return gender;}public String getAddr() {return addr;}Overridepublic String toString() {return User{ id id , username username \ , password password \ , gender gender \ , addr addr \ };} }2加载核心配置文件获取SqlSessionFactory对象 3获取SqlSession对象执行SQL语句 4释放资源 /java/MyBatisDemo.java import com.wmy.pojo.User; 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 java.io.IOException; import java.io.InputStream; import java.util.List;/*** MyBatis 快速入门代码*/ public class MyBatisDemo {public static void main(String[] args) throws IOException {//1.加载MyBatis的核心配置文件获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();//3.执行sqlListUser users sqlSession.selectList(test.selectAll);System.out.println(users);//4.释放资源sqlSession.close();} }遇到的一些坑给大家说一下 首先确定src文件下的java文件已经Make Directory as为Sources Rootsrc文件下的resources文件已经Make Directory as为Resources Root。事前通过cmd管理员登录启动mysql服务如何启动在最开始已经说过了然后启动Navicat连接数据库之后再考虑使用IDEA连接mysql数据库可以通过mysql数据库的Test Connection按钮尝试连接这里比较容易报错如果出现登录失败之类的问题可以手动打开任务管理器点击“详细信息”关闭掉端口号为3306的服务mysql数据库默认的端口号就是3306然后重启mysql服务需要注意的是PID和端口号不是一回事可以通过netstat -ano命令查询当前主机PID和端口号的对应关系然后taskkill /pid掉端口号为3306的PID即可使IDEA与mysql数据库连接成功其实端口号为3306的进程就是“mysqld.exe”它可能不止一个kill掉它也就相当于重启mysql服务了就不需要通过一系列命令查询PID与端口号的对应关系亲测有效。IDEA连接好mysql数据库还有一个好处就是在pom.xml配置依赖dependency时如果不知道你下载的mysql版本与mysql驱动版本的对应关系的话当你打出来org.mybatis时IDEA会自动生成适合你mysql版本的mysql驱动的版本。记得每次修改完pom.xml文件后reload一下。 关于maven项目的打包方式如果是新手建议在pom.xml文件中将packaging标签设置为jar打包方式会生成与src同级的target目录确保target文件中的classes目录下有mybatis-config.xml文件没有的话可以尝试手动添加或者rebuild一下。 Mapper代理开发 如上图所示MyBatis-Emo.java中存在硬编码的问题。 Mapper代理开发的目的在于 解决原生方式中的硬编码。简化后期执行SQL。 简言之就是使用 UserMapper userMapper sqlSession.getMapper(UserMapper.class); ListUser users userMapper.selectAll();来代替 ListUser users sqlSession.selectList(test.selectAll);这种方式有很多优势首先它不依赖于字符串字面值会更安全一点其次IDEA的代码补全功能可以快速选择到映射好的SQL语句。 需求 使用Mapper代理查询user表中的数据。 步骤 1.定义与SQL映射文件同名的Mapper接口并且将Mapper接口和SQL映射文件放置在同一目录下。 方式一不推荐直接将resources资源文件下的UserMapper.xml直接拖到java文件的mapper目录下因为在Maven项目中要求java代码和xml文件要分开放方便管理。 方式二考虑到编译maven工程后会在target文件下生成一个classes目录配置文件都会在classes目录下并且与类文件com同级所以为了保证Mapper接口和SQL映射文件在编译之后在同一目录下并且要求xml文件与java文件分开放置我们可以在resources目录下建立一个与UserMapper.java一模一样的包结构即如下所示。 maven项目编译后 2.设置SQL映射文件的namespace属性为Mapper接口全限定名。 /resources/com.wmy.mapper/UserMapper.xml mapper namespacecom.wmy.mapper.UserMapper/resources/mybatis-config.xml mappers!--指定当前sql文件映射路径--!--在UserMapper.xml上鼠标右击 选择copy path- Path From Source Root 然后把路径粘贴到mybatis-config.xml的mapper中的resource属性中-- mapper resourcecom/wmy/mapper/UserMapper.xml/ /mappers3.在Mapper接口中定义方法方法名就是SQL映射文件中sql语句的id并保持参数类型和返回值类型一致。 /java/com.wmy.mapper/UserMapper.java package com.wmy.mapper; import com.wmy.pojo.User; import java.util.List; public interface UserMapper {//查询到的是一个集合 所以是ListUser 如果返回值是User 那么只会查找到一个对象ListUser selectAll(); }4.编码 1通过SqlSession的getMapper方法获取Mapper接口的代理对象。 2调用对应方法完成sql的执行。 /java/com.wmy/MyBatisEmo.java //3. 执行sql UserMapper userMapper sqlSession.getMapper(UserMapper.class); ListUser users userMapper.selectAll(); System.out.println(users);注需要在mysql数据库已经与IDEA连接的情况下运行代码。 有一点需要说的是如果Mapper接口名称和SQL映射文件名称相同并在同一目录下则可以使用包扫描的方式简化SQL映射文件的加载。 /resources/mybatis-config.xml mappers!--指定当前sql文件映射路径--!--mapper resourcecom/wmy/mapper/UserMapper.xml/--!--mapper代理的方式--package namecom.wmy.mapper/ /mappers重新运行MyBatisEmo.java可以得到相同的查询结果从上述xml代码中我们可以看出在java文件和resources文件中路径的命名方式是不同的.“和”/用来分级的区别上述包扫描的方式是从java文件中扫描UserMapper.java文件的。 增删改查 环境准备 tb_brand.sql /java/com.wmy.pojo/Brand.java package com.wmy.pojo; public class Brand {private Integer id;private String brandName;private String companyName;private Integer ordered;private String description;private Integer status;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getBrandName() {return brandName;}public void setBrandName(String brandName) {this.brandName brandName;}public String getCompanyName() {return companyName;}public void setCompanyName(String companyName) {this.companyName companyName;}public Integer getOrdered() {return ordered;}public void setOrdered(Integer ordered) {this.ordered ordered;}public String getDescription() {return description;}public void setDescription(String description) {this.description description;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status status;}Overridepublic String toString() {return Brand{ id id , brandName brandName \ , companyName companyName \ , ordered ordered , description description \ , status status };} }测试类 安装MyBatisX插件 安装后的效果 该插件可以实现 XML和接口方法的相互跳转比如说UserMapper.xml和UserMapper.java之间的快捷跳转。根据接口方法生成statement因为mapper接口要与sql映射文件中的方法名称相同该插件可以保证名称不会起错。 配置文件完成增删改查 查询 一查询所有数据 步骤 1.编写接口方法mapper接口 参数无结果List Brand /java/com.wmy.mapper/BrandMapper.java public interface BrandMapper {/** 查询所有* */public ListBrand selectAll(); }2.编写SQL语句SQL映射文件 /resources/com.wmy.mapper/BrandMapper.xml mapper namespacecom.wmy.mapper.BrandMapper!--statement--select idselectAll resultTypecom.wmy.pojo.Brandselect *from tb_brand;/select /mapper3.执行方法测试 /test/java/com.wmy.test/MyBatisTest.java public class MyBatisTest {Testpublic void testSelectAll() throws IOException {//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession();//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法ListBrand brands brandMapper.selectAll();System.out.println(brands);//5. 释放资源sqlSession.close();} }通过上述运行结果我们可以看出数据库字表的字段名称和实体类的属性名称不一样则不能自动封装数据。 方式一起别名 /resources/com.wmy.mapper/BrandMapper.xml select idselectAll resultTypecom.wmy.pojo.Brandselect id,brand_name as brandName,company_name as companyName,ordered, description, statusfrom tb_brand; /select缺点在于每次查询都要定义一次别名这里可以使用sql片段 sql idbrand_columnid,brand_name as brandName,company_name as companyName,ordered, description, status /sql !--statement-- select idselectAll resultTypecom.wmy.pojo.Brandselectinclude refidbrand_column/from tb_brand; /select但是sql片段也存在缺点就是它太不灵活了假如我们不是查询全部数据呢就需要重写sql片段。 方法二使用resultMap resultMap idbrandResultMap typecom.wmy.pojo.Brandresult columnbrand_name propertybrandName/resultresult columncompany_name propertycompanyName/result /resultMap select idselectAll resultMapbrandResultMapselect *from tb_brand; /selectresultMap的使用方式 二查看详情 需求 点击查看详情展示商品品牌信息 步骤 1.编写接口方法Mapper接口 参数idint结果Brand /java/com.wmy.mapper/BrandMapper.java Brand selectById(int id);2.编写SQL语句SQL映射文件 /resources/com.wmy.mapper/BrandMapper.xml !--参数占位符1.#{}会将其替换为 防止SQL注入2.${}拼sql 会存在SQL注入问题3.使用时机参数传递的时候用#{}表名或者列名不固定的情况下用${}参数类型parameterType属性 可以省略不写特殊字符处理如小于号在xml文件中不能直接使用1.转义字符2.CDATA区 CD提示--select idselectById resultMapbrandResultMapselect *from tb_brand where id #{id};/select3.执行方法测试 /test/java/com.wmy.test/MyBatisTest.java Test public void testSelectById() throws IOException {int id 1;//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession();//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法Brand brand brandMapper.selectById(id);System.out.println(brand);//5. 释放资源sqlSession.close(); }三条件查询 1多条件查询 需求 根据“当前状态”、“企业名称”和“品牌名称”三个选项进行多条件查询数据信息。 步骤 1.编写接口方法Mapper接口 参数所有查询条件结果List Brand /java/com.wmy.mapper/BrandMapper.java /** 条件查询* 参数接收* 1. 散装参数: 如果方法中有多个参数需要使用Param(SQL参数占位符名称)* 2. 对象参数: 对象的属性名称要和SQL参数占位符名称一致* 3. map集合的参数: map集合的键的名称要和SQL参数占位符对应 * */ ListBrand selectByCondition(Param(status) int status, Param(companyName) String companyName, Param(brandName) String brandName); ListBrand selectByCondition(Brand brand); ListBrand selectByCondition(Map map);2.编写SQL语句SQL映射文件 /resources/com.wmy.mapper/BrandMapper.xml select idselectByCondition resultMapbrandResultMapselect *from tb_brandwhere status #{status}and company_name like #{companyName}and brand_name like #{brandName}; /select3.执行方法测试 重点MyBatis如何接收多个参数 / 接口方法中参数的封装方式 /test/java/com.wmy.test/MyBatisTest.java Test public void testSelectByCondition() throws IOException {// 接收参数int status 1;String companyName 华为;String brandName 华为;// 处理参数companyName % companyName %;brandName % brandName %;// 封装参数/*Brand brand new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);*/Map map new HashMap();map.put(status , status);map.put(companyName , companyName);map.put(brandName , brandName);//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession();//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法//ListBrand brands brandMapper.selectByCondition(status, companyName, brandName);//ListBrand brands brandMapper.selectByCondition(brand);ListBrand brands brandMapper.selectByCondition(map);System.out.println(brands);//5. 释放资源sqlSession.close(); }2动态条件查询 SQL语句会随着用户的输入或外部条件的变化而变化称为动态SQL。 1多条件 - 动态查询 需求 在多条件查询的基础上我们考虑这样一个问题用户在输入条件时是否所有条件都会填写 方案MyBatis逻辑标签的使用 /resources/com.wmy.mapper/BrandMapper.xml ① if 判断标签 恒等式 让所有条件格式一致 select idselectByCondition resultMapbrandResultMapselect *from tb_brandwhere 11if teststatus ! nulland status #{status}/ifif testcompanyName ! null and companyName ! and company_name like #{companyName}/ifif testbrandName ! null and brandName ! and brand_name like #{brandName};/if /select② where 标签替换 where关键字 select idselectByCondition resultMapbrandResultMapselect *from tb_brandwhereif teststatus ! nulland status #{status}/ifif testcompanyName ! null and companyName ! and company_name like #{companyName}/ifif testbrandName ! null and brandName ! and brand_name like #{brandName};/if/where /select2单条件 - 动态查询 需求 从多个条件中选择一个条件作为后续输入的限制。 /resources/com.wmy.mapper/BrandMapper.xml !--单条件- 动态查询 -- select idselectByConditionSingle resultMapbrandResultMapselect *from tb_brandwhere/*choose相当于switch when相当于case*/choosewhen teststatus ! nullstatus #{status}/whenwhen testcompanyName ! null and companyName ! company_name like #{companyName}/whenwhen testbrandName ! null and brandName ! brand_name like #{brandName}/whenotherwise11/otherwise/choose /select !--或者-- select idselectByConditionSingle resultMapbrandResultMapselect *from tb_brandwherechoosewhen teststatus ! nullstatus #{status}/whenwhen testcompanyName ! null and companyName ! company_name like #{companyName}/whenwhen testbrandName ! null and brandName ! brand_name like #{brandName}/when/choose/where /select/test/java/com.wmy.test/MyBatisTest.java Test public void testSelectByConditionSingle() throws IOException {// 接收参数int status 1;String companyName 华为;String brandName 华为; // 封装参数Brand brand new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession();//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法ListBrand brands brandMapper.selectByConditionSingle(brand);System.out.println(brands);//5. 释放资源sqlSession.close(); }添加 一简单添加 步骤 1.编写接口方法Mapper接口 参数除了id之外的所有数据结果void /java/com.wmy.mapper/BrandMapper.java void add(Brand brand);2.编写SQL语句SQL映射文件 /resources/com.wmy.mapper/BrandMapper.xml !--添加-- insert idaddinsert into tb_brand (brand_name ,company_name ,ordered ,description ,status)values (#{brandName} ,#{companyName} ,#{ordered} ,#{status}); /insert3.执行方法测试 /test/java/com.wmy.test/MyBatisTest.java Test public void testAdd() throws IOException {// 接收参数int status 1;String companyName iPhone;String brandName 苹果;String description 加油苹果加油额卖力卡;int ordered 100;// 封装参数Brand brand new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);brand.setDescription(description);brand.setOrdered(ordered);//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象已经设置为自动提交事务到数据库SqlSession sqlSession sqlSessionFactory.openSession(true);//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法brandMapper.add(brand);//5. 释放资源sqlSession.close(); }注MyBatis事务 openSession()默认开启事务进行增删改查操作后需要使用sqlSession.commit();手动提交事务 openSession(true)可以设置为自动提交事务关闭事务 二添加—主键返回 需求 在数据添加成功后需要获取插入数据库数据的主键的值比如说添加订单和订单项。 1.添加订单 2.添加订单项订单项中需要设置所属订单的id。 步骤 id作为商品的主键在add()时并没有输入需要获取id值但是不能直接通过getId()方法获取。 只需要在简单添加的基础上在**/resources/com.wmy.mapper/BrandMapper.xml**文件中的 insert 标签中将useGeneratedKeys设置为true将keyProperty属性设置为id即可。 修改 一修改全部字段 步骤 1.编写接口方法Mapper接口 参数所有数据结果int影响的行数 /java/com.wmy.mapper/BrandMapper.java int update(Brand brand);2.编写SQL语句SQL映射文件 /resources/com.wmy.mapper/BrandMapper.xml !--修改-- update idupdateupdate tb_brandset brand_name #{brandName},company_name #{companyName},ordered #{ordered},description #{description},status #{status}where id #{id}; /update3.执行方法测试 /test/java/com.wmy.test/MyBatisTest.java Test public void testUpdate() throws IOException {// 接收参数int id 5;int status 1;String companyName 苹果;String brandName iPhone;String description 加油苹果加油额卖力卡;int ordered 200;// 封装参数Brand brand new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);brand.setDescription(description);brand.setOrdered(ordered);brand.setId(id);//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession(true);//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法int rows brandMapper.update(brand);System.out.println(rows);//5. 释放资源sqlSession.close(); }二修改动态字段 需求 上述修改过程必须修改所有字段不具有通用性。 /resources/com.wmy.mapper/BrandMapper.xml !--修改-- update idupdateupdate tb_brandsetif testbrandName ! null and brandName ! brand_name #{brandName},/ifif testcompanyName ! null and companyName ! company_name #{companyName},/ifif testordered ! nullordered #{ordered},/ifif testdecription ! nulldescription #{description},/ifif teststatus ! nullstatus #{status}/if/setwhere id #{id}; /update注 set 标签可以解决空值输入时SQL语句的结束标志,的问题并且不会出现只修改某个属性其他属性变为null的情况。 删除 一删除一个 /java/com.wmy.mapper/BrandMapper.java void deleteById(int id);/resources/com.wmy.mapper/BrandMapper.xml !--删除-- delete iddeleteByIddeletefrom tb_brandwhere id #{id}; /delete/test/java/com.wmy.test/MyBatisTest.java Test public void testDeleteById() throws IOException {// 接收参数int id 4;//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession(true);//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法brandMapper.deleteById(id);//5. 释放资源sqlSession.close(); }二批量删除 /java/com.wmy.mapper/BrandMapper.java void deleteByIds(Param(ids)int[] ids);/resources/com.wmy.mapper/BrandMapper.xml !--mybatis会将数组参数封装为一个Map集合方式一默认键的集合叫做array 可以通过param注解修改名称方式二使用Param注解改变Map集合默认key的名称 -- delete iddeleteByIdsdelete from tb_brand where idinforeach collectionids itemid separator, open( close)#{id}/foreach; /delete/test/java/com.wmy.test/MyBatisTest.java Test public void testDeleteByIds() throws IOException {// 接收参数int[] ids {4,5,6};//1. 获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象SqlSession sqlSession sqlSessionFactory.openSession(true);//3. 获取Mapper接口的代理对象BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//4. 执行方法brandMapper.deleteByIds(ids);//5. 释放资源sqlSession.close(); }参数传递 MyBatis接口方法中可以接收各种各样的参数MyBatis底层对于这些参数进行不同的封装处理方式。 1.单个参数 POJO类型可以直接使用但是 属性名 要和 参数占位符名称 一致Map集合可以直接使用但是 键名 要和 参数占位符名称 一致Collection封装为Map集合 map.put(arg0 ,collection集合); map.put(collection, collection集合);List封装为Map集合 map.put(arg0 ,list集合); map.put(collection, list集合); map.put(list ,list集合);Array封装为Map集合 map.put(arg0 , 数组); map.put(array, 数组);其他类型可以直接使用 2.多个参数MyBatis会将其封装为Map集合 比如说有一个Mapper映射接口中传入了username和password两个参数。 那么这两个参数会被getParamName()方法自动封装为map集合具体键值对的构造就相当于 map.put(arg0, username); map.put(param1, username); map.put(param2, password); map.put(arg1, password);但是这种自动封装的方式阅读性太差了所以这里可以使用Param注解替换Map集合中默认的键名。 //username和password被封装为map对象后对应的键名为param1和param2 或者是arg0和arg1 User select(String username , String password); //此时使用Param注解后 username和password对应的键名为username和password User select(Param(username)String username ,Param(password)String password);总之无论是单个参数还是多个参数被封装为Map对象将来都建议使用Param注解来修改Map集合中默认的键名并使用修改后的名称来获取值这样可读性更高。 注解完成增删改查 用官方的话来说使用注解未映射简单语句会使代码显得更加苒洁但对于稍微复杂一点的语句Java注解不仅力不从心还会让你本就复杂的SQL语句更加最乱不堪。因此如果你需要做一些很复杂的捐作最好用XML来映射语句。 选择何种方式来配置映射以及认为是否应该要统─缺射话句定义的形式完全取决于你和次的团队。换句话说永远不要拘于一种方式。你可以很轻松的在基于注解和XML的句映射方式间自由移植和切换。 查询Select添加Insert修改Update删除Delete 例如 /java/com.wmy.mapper/UserMapper.java Select(select * from tb_user where id #{id}) User selectById(int id);
http://www.hkea.cn/news/14278265/

相关文章:

  • 机械建设网站制作上海如何优化网站
  • 做网站用的品牌营销增长新参考价格
  • 青海专业网页设计免费建站提供设计网站效果图
  • 紫搜科技建站教育网站制作费用
  • 海港区网站快排seo原创小说手机网站制作需要多少钱
  • 网站开发core文件作用高端建设网站建设
  • 网站的制作建站人中国建设手机银行app下载
  • 关于建设网站的报告网站后台怎么替换图片
  • 潮州企业网站建设wordpress 增加阅读量
  • 腾讯云建站多少钱中国建设银行官方网站网上银行
  • 襄阳市做网站 优帮云开发公司产品部课件
  • 制作企业网站软件软件开发商是什么意思
  • 菏泽兼职网站建设读书网网站建设策划书
  • 做企业网站制作北京朝阳区最新通知
  • 网站建设公司杭州企业网站建设外包
  • 南昌建网站那家好精准客户怎么营销
  • 使用iframe做网站wordpress使用菜单
  • 口碑好网站建设公司哪家好wordpress 集成paypal
  • 网站正在建设中 免费中企动力邮箱登陆
  • 制作人在那个网站能看广东融都建设有限公司 公司网站
  • 网站建设播放vr视频高校网站群建设
  • 点个赞科技 网站制作网页设计作品及代码
  • 中国建设银行北京分行门户网站公告wordpress 流程图插件
  • 泉州市第一建设有限公司网站南宁网站建设云尚网络
  • 网站建设公司年终总结西安专业做网站的公司哪家好
  • 网站模板在线制作泉州科技云网站建设
  • 网站公示如何做链接中太建设集团官方网站
  • 二道网站建设制作网站的图片素材
  • 用手机做电影网站瑞幸咖啡网络营销策划方案
  • ps网页制作视频教程宁晋seo网站优化排名