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

信息管理系统网站开发教程怎么注册阿里巴巴店铺

信息管理系统网站开发教程,怎么注册阿里巴巴店铺,合肥企业快速建站,北京建设教育协会网站Mybatis 学习Mybatis就要学会查看官网#xff0c;官网地址如下#xff1a;MyBatis中文网 1、简介 1.1什么是Mybatis MyBatis 是一款优秀的持久层框架#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取…Mybatis 学习Mybatis就要学会查看官网官网地址如下MyBatis中文网 1、简介 1.1什么是Mybatis MyBatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJOPlain Old Java Objects普通老式 Java 对象为数据库中的记录。 1.2如何获得Mybatis 通过Maven仓库直接获取 dependenciesdependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.2/version/dependency /dependenciesgithub上获取 中文文档 1.3持久化 数据持久化 持久化就是将程序的数据在持久状态和瞬时状态转化的过程内存断电即失数据持久化的两种方式数据库jdbcio文件持久化 为什么需要持久化 因为内存断电即失有一些对象我们不能让他丢掉需要持久化将他存储起来。 内存太贵了 1.4持久层 三层结构Dao层Service层Controller层 持久层是完成持久化工作的代码块层界限十分明显 1.5为什么需要Mybatis 帮助程序员将数据存入到数据库中 传统的JDBC代码太复杂了为了把它简化形成一个框架实现自动化。 不用Mybatis也可以只是用了Mybatis框架可以更容易上手 优点 sql和代码的分离提高可维护性提供映射标签支持对象与数据库的orm字段关系映射提供对象关系映射标签支持对象关系组建维护提供xml标签支持编写动态sql 2、第一个Mybatis程序 思路搭建环境–导入Mybatis–编写代码–测试 2.1搭建环境 搭建数据库 create database Mybatis; use Mybatis;update table user( id int(20) not null primary key, name varchar(30) default null, password int(20) default null )ENGINEINNODB DEFAULT CHARSETUTF8; alter table user modify column password varchar(20); insert into user values (1,狂神,123456), (2,狂神,123456), (3,狂神,123456)#####2.2搭建项目 1、新建一个普通的maven项目 2、导入依赖 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdMybatis/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingnameMybatis/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!--JUNIT驱动--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency!--Mysql驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.37/version/dependency!--Mybatis驱动--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.2/version/dependency/dependencies /project2.3创建模块 编写mybatis的核心配置文件编写mybatis的工具类 package com.kuang.utils;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;//SqlSessionFactory 工厂模式 用来构建SqlSession的 public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory;//静态代码块,按照官方文档填写static{//第一步获取SqlSessionFactory对象try {//获取配置资源String resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {throw new RuntimeException(e);} } //通过sqlSessionFactory获取SqlSession对象public static SqlSession getSession(){return sqlSessionFactory.openSession();} }2.4编写代码 实体类 根据数据库中的数据元素编写类的属性。 package com.kuang.pojo;public class User {private int id;private String name;private String pwd;Overridepublic String toString() {return User{ id id , name name \ , pwd pwd \ };}public User(int id, String name, String pwd) {this.id id;this.name name;this.pwd pwd;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd pwd;} }Dao接口 Dao接口定义了sql语句的实现方法 package com.kuang.dao;import com.kuang.pojo.User;import java.util.List;public interface UserDao {ListUser getUserList(); }接口实现类 在Mapper配置文件中直接配置对应接口信息查询的数据库返回结果的类型等等侧面实现接口方法不用重复编写代码 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd !--名字对应所要实现的接口-- mapper namespacecom.kuang.dao.UserDao!--id对应所要实现的接口方法resultType对象所要返回的数据类型--select idgetUserList resultTypecom.kuang.pojo.Userselect * from mybatis.user/select /mapper#####2.5测试 报错提示org.apache.ibatis.binding.BindingException: Type interface com.kuang.dao.UserDao is not known to the MapperRegistry. 这是因为pom.xml文件中maven没有配置我们定义的Dao层文件。 ####3、CRUD id就是对应的namespace中的方法名resultTypeSql语句执行的返回值parameterType参数的类型 步骤 1、编写接口2、配置xml文件实现接口编写对应sq语句3、测试增删改要注意提交事务 3.1接口文件 package com.kuang.dao; import com.kuang.pojo.User; import java.util.List; public interface UserMapper {//查询全部用户ListUser getUserList();//根据ID查询用户User getUserById(int id);//新增用户Integer addUser(User user);//修改用户Integer updateUser(User user);//删除用户void deleteUser(int id);}3.2实现接口 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd !--名字对应所要实现的接口-- mapper namespacecom.kuang.dao.UserMapper!--id对应所要实现的接口方法resultType对象所要返回的数据类型--select idgetUserList resultTypecom.kuang.pojo.Userselect * from mybatis.user/selectselect id getUserById resultTypecom.kuang.pojo.User parameterTypeint select * from mybatis.user where id #{id}/selectselect idaddUser parameterTypecom.kuang.pojo.User resultTypejava.lang.Integer insert into user (id,name,password) values (#{id},#{name},#{password});/selectupdate idupdateUser parameterTypecom.kuang.pojo.User update user set name #{name},password #{password} where id #{id}/updatedelete iddeleteUser parameterTypeintdelete from user where id #{id}/delete /mapper3.3测试类 package com.kuang.dao;import com.kuang.pojo.User; import com.kuang.utils.MybatisUtil; import org.apache.ibatis.session.SqlSession; import org.testng.annotations.Test;import java.util.List;public class UserDaoTest {Testpublic void test(){//第一步获得 SqlSession对象SqlSession sqlSessionMybatisUtil.getSession();//执行sqlUserMapper userDaosqlSession.getMapper(UserMapper.class);ListUser userList userDao.getUserList();for(User user : userList){System.out.println(user);}sqlSession.close();}Testpublic void getUserById(){SqlSession sqlSession MybatisUtil.getSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);User user userMapper.getUserById(1);System.out.println(user);sqlSession.close();}//增删改需要提交事务Testpublic void addUser(){SqlSession sqlSession MybatisUtil.getSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);Integer resuserMapper.addUser(new User(4,哈哈,123456));if(resnull)System.out.println(insert ok);else System.out.println(insert failed);//提交事务sqlSession.commit();sqlSession.close();}Testpublic void updateUser() {SqlSession sqlSession MybatisUtil.getSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);Integer res userMapper.updateUser(new User(4, 哈哈, 12345));sqlSession.commit();sqlSession.close();}Testpublic void deleteUser(){SqlSession sqlSession MybatisUtil.getSession();UserMapper userMapper sqlSession.getMapper(UserMapper.class);userMapper.deleteUser(2);sqlSession.commit();sqlSession.close();} }3.4万能的Map写项目较好 假设实体类或者数据库中的表字段或者参数过多我们应当考虑使用map 在接口方法中参数直接传递Map User selectUserByNP2(MapString,Object map);编写sql语句的时候需要传递参数类型参数类型为map select idselectUserByNP2 parameterTypemap resultTypecom.kuang.pojo.Userselect * from user where name #{username} and pwd #{pwd} /select在使用方法的时候Map的 key 为 sql中取的值即可没有顺序要求 MapString, Object map new HashMapString, Object(); map.put(username,小明); map.put(pwd,123456); User user mapper.selectUserByNP2(map);4、配置解析 4.1核心配置文件 mybatis-config.xmlMybatis的配置文件包含了会深深影响Mybatis行为的设置和属性信息 configuration配置 properties属性 settings设置 typeAliases类型别名 typeHandlers类型处理器 objectFactory对象工厂 plugins插件 environments环境配置 environment环境变量 transactionManager事务管理器 dataSource数据源 databaseIdProvider数据库厂商标识 mappers映射器4.2环境配置environment environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBCproperty name... value...//transactionManagerdataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment /environments配置MyBatis的多套运行环境将SQL映射到多个不同的数据库上必须指定其中一个为默认运行环境通过default指定 4.3Properties优化 数据库这些属性都是可外部配置且可动态替换的既可以在典型的 Java 属性文件中配置亦可通过 properties 元素的子元素来传递 。 第一步 在资源目录下新建一个db.properties drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/mybatis?useSSLtrueuseUnicodetruecharacterEncodingutf8 usernameroot password123456第二步 : 将文件导入properties 配置文件 configuration!--导入properties文件--properties resourcedb.properties/environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment/environmentsmappersmapper resourcemapper/UserMapper.xml//mappers /configuration可以直接引入外部文件可以在其中增加一些属性配置如果两个文件有同一个字段优先使用外部配置文件 4.4类型别名typeAliases 类型别名是为Java类型设置一个短的名字存在的意义仅在于用来减少类完全限定名的冗余 !--配置别名,注意顺序-- typeAliasestypeAlias typecom.kuang.pojo.User aliasUser/ /typeAliases也可以指定一个包名Mybatis会在包名下面搜索需要的java Bean比如扫描实体类的包意思就是当包名为User时我们可以使用包的小写别名“user”。 也可以在实体上增加注解来添加类的别名 Alias(user) public class User{}4.5设置 设置查看官方文档 懒加载 日志实现 缓存开启关闭 一个配置完整的settings元素的实例如下 settingssetting namecacheEnabled valuetrue/setting namelazyLoadingEnabled valuetrue/setting namemultipleResultSetsEnabled valuetrue/setting nameuseColumnLabel valuetrue/setting nameuseGeneratedKeys valuefalse/setting nameautoMappingBehavior valuePARTIAL/setting nameautoMappingUnknownColumnBehavior valueWARNING/setting namedefaultExecutorType valueSIMPLE/setting namedefaultStatementTimeout value25/setting namedefaultFetchSize value100/setting namesafeRowBoundsEnabled valuefalse/setting namemapUnderscoreToCamelCase valuefalse/setting namelocalCacheScope valueSESSION/setting namejdbcTypeForNull valueOTHER/setting namelazyLoadTriggerMethods valueequals,clone,hashCode,toString/ /settings4.6映射器mappers MapperRegistry注册绑定我们的mapper文件 方式一文件定位 mappersmapperresourcecoom/kuang/dao/UserMapper.xml/ /mappers方式二使用class文件绑定注册 mappersmapper classcom.kuang.dao.UserMapper/ /mappers注意点 接口和他的Mapper配置文件必须同名接口和他的Mapper配置文件必须在同一个包下 方式三使用扫描包进入诸如绑定 mapperspackage namecom.kuang.dao/ /mappers4.7作用域和生命周期 生命周期和作用域时非常重要的。 “lazyLoadTriggerMethods” value“equals,clone,hashCode,toString”/ ##### 4.6映射器mappersMapperRegistry注册绑定我们的mapper文件方式一文件定位xml mappersmapperresourcecoom/kuang/dao/UserMapper.xml/ /mappers方式二使用class文件绑定注册 mappersmapper classcom.kuang.dao.UserMapper/ /mappers注意点 接口和他的Mapper配置文件必须同名接口和他的Mapper配置文件必须在同一个包下 方式三使用扫描包进入诸如绑定 mapperspackage namecom.kuang.dao/ /mappers4.7作用域和生命周期 生命周期和作用域时非常重要的。 sqlSessionFactoryBuilder 一旦创建了sqlSessionFactory就不需要了局部变量 sqlSessionFactory 可以理解为数据库连接池一旦被创建就应该在应用的运行期间一直存在没有任何理由丢弃它或重新创建另一个实例最佳作用域是应用作用域最简单的是使用单例模式或者静态单例模式 sqlSession 连接到连接池的一个请求SqlSession的实例不是线程安全的因此是不能被共享的最佳作用域是调用作用域或者方法作用域用完之后需要赶紧关闭 5、ResultMap 解决属性名和字段名不一致的问题 数据库中的字段和定义类中的字段不一样 解决办法 起别名 select idselectUserById resultTypeUserselect id , name , pwd as password from user where id #{id} /selectresultMap结果集映射 resultMap idUserMap typeUser!-- id为主键 --id columnid propertyid/!-- column是数据库表的列名 , property是对应实体类的属性名 --result columnname propertyname/result columnpwd propertypassword/ /resultMap select idselectUserById resultMapUserMapselect id , name , pwd from user where id #{id} /select6、日志 6.1日志工厂 如果一个数据库操作出现了异常我们需要排错。 SLF4JApache Commons LoggingLog4j 2Log4jJDK logging 在Mybatis中具体使用哪一个日志实现在设置中配置 settingssetting namelogImpl valueSTDOUT_LOGGING/ /settings6.2Log4j 1.先导入Log4j的包 dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version /dependency2.配置文件 #将等级为DEBUG的日志信息输出到console和file这两个目的地console和file的定义在下面的代码 log4j.rootLoggerDEBUG,console,file #控制台输出的相关设置 log4j.appender.console org.apache.log4j.ConsoleAppender log4j.appender.console.Target System.out log4j.appender.console.ThresholdDEBUG log4j.appender.console.layout org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern[%c]-%m%n #文件输出的相关设置 log4j.appender.file org.apache.log4j.RollingFileAppender log4j.appender.file.File./log/kuang.log log4j.appender.file.MaxFileSize10mb log4j.appender.file.ThresholdDEBUG log4j.appender.file.layoutorg.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern[%p][%d{yy-MM-dd}][%c]%m%n #日志输出级别 log4j.logger.org.mybatisDEBUG log4j.logger.java.sqlDEBUG log4j.logger.java.sql.StatementDEBUG log4j.logger.java.sql.ResultSetDEBUG log4j.logger.java.sql.PreparedStatementDEBUGsetting设置日志实现 settingssetting namelogImpl valueLOG4J/ /settings测试类 //注意导包org.apache.log4j.Logger static Logger logger Logger.getLogger(MyTest.class); Test public void selectUser() {logger.info(info进入selectUser方法);logger.debug(debug进入selectUser方法);logger.error(error: 进入selectUser方法);SqlSession session MybatisUtils.getSession();UserMapper mapper session.getMapper(UserMapper.class);ListUser users mapper.selectUser();for (User user: users){System.out.println(user);}session.close(); }
文章转载自:
http://www.morning.xsjfk.cn.gov.cn.xsjfk.cn
http://www.morning.kgrwh.cn.gov.cn.kgrwh.cn
http://www.morning.pyzt.cn.gov.cn.pyzt.cn
http://www.morning.rfhm.cn.gov.cn.rfhm.cn
http://www.morning.pypbz.cn.gov.cn.pypbz.cn
http://www.morning.ncwgt.cn.gov.cn.ncwgt.cn
http://www.morning.qhczg.cn.gov.cn.qhczg.cn
http://www.morning.smmby.cn.gov.cn.smmby.cn
http://www.morning.wrdlf.cn.gov.cn.wrdlf.cn
http://www.morning.xkzr.cn.gov.cn.xkzr.cn
http://www.morning.jmdpp.cn.gov.cn.jmdpp.cn
http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn
http://www.morning.qftzk.cn.gov.cn.qftzk.cn
http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn
http://www.morning.trqhd.cn.gov.cn.trqhd.cn
http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn
http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn
http://www.morning.qqbjt.cn.gov.cn.qqbjt.cn
http://www.morning.hrkth.cn.gov.cn.hrkth.cn
http://www.morning.yqpck.cn.gov.cn.yqpck.cn
http://www.morning.gxklx.cn.gov.cn.gxklx.cn
http://www.morning.swyr.cn.gov.cn.swyr.cn
http://www.morning.fdlyh.cn.gov.cn.fdlyh.cn
http://www.morning.zynjt.cn.gov.cn.zynjt.cn
http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn
http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn
http://www.morning.yxwcj.cn.gov.cn.yxwcj.cn
http://www.morning.mplb.cn.gov.cn.mplb.cn
http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn
http://www.morning.hwbf.cn.gov.cn.hwbf.cn
http://www.morning.fqssx.cn.gov.cn.fqssx.cn
http://www.morning.yggwn.cn.gov.cn.yggwn.cn
http://www.morning.tfwg.cn.gov.cn.tfwg.cn
http://www.morning.xfwnk.cn.gov.cn.xfwnk.cn
http://www.morning.zrhhb.cn.gov.cn.zrhhb.cn
http://www.morning.yesidu.com.gov.cn.yesidu.com
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.wxckm.cn.gov.cn.wxckm.cn
http://www.morning.jxscp.cn.gov.cn.jxscp.cn
http://www.morning.jkwwm.cn.gov.cn.jkwwm.cn
http://www.morning.jfjbl.cn.gov.cn.jfjbl.cn
http://www.morning.yktwr.cn.gov.cn.yktwr.cn
http://www.morning.kjjbz.cn.gov.cn.kjjbz.cn
http://www.morning.monstercide.com.gov.cn.monstercide.com
http://www.morning.bmsqq.cn.gov.cn.bmsqq.cn
http://www.morning.bkylg.cn.gov.cn.bkylg.cn
http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn
http://www.morning.fygbq.cn.gov.cn.fygbq.cn
http://www.morning.xcxj.cn.gov.cn.xcxj.cn
http://www.morning.mhnr.cn.gov.cn.mhnr.cn
http://www.morning.chmcq.cn.gov.cn.chmcq.cn
http://www.morning.nypsz.cn.gov.cn.nypsz.cn
http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn
http://www.morning.frtb.cn.gov.cn.frtb.cn
http://www.morning.lffrh.cn.gov.cn.lffrh.cn
http://www.morning.xjtnp.cn.gov.cn.xjtnp.cn
http://www.morning.pqypt.cn.gov.cn.pqypt.cn
http://www.morning.nlywq.cn.gov.cn.nlywq.cn
http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn
http://www.morning.llsrg.cn.gov.cn.llsrg.cn
http://www.morning.lhwlp.cn.gov.cn.lhwlp.cn
http://www.morning.mzgq.cn.gov.cn.mzgq.cn
http://www.morning.sfdky.cn.gov.cn.sfdky.cn
http://www.morning.gprzp.cn.gov.cn.gprzp.cn
http://www.morning.mtrz.cn.gov.cn.mtrz.cn
http://www.morning.qqpg.cn.gov.cn.qqpg.cn
http://www.morning.fwkq.cn.gov.cn.fwkq.cn
http://www.morning.qineryuyin.com.gov.cn.qineryuyin.com
http://www.morning.ytbr.cn.gov.cn.ytbr.cn
http://www.morning.dgxrz.cn.gov.cn.dgxrz.cn
http://www.morning.mzydm.cn.gov.cn.mzydm.cn
http://www.morning.fewhope.com.gov.cn.fewhope.com
http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn
http://www.morning.krdmn.cn.gov.cn.krdmn.cn
http://www.morning.wfmqc.cn.gov.cn.wfmqc.cn
http://www.morning.lgrkr.cn.gov.cn.lgrkr.cn
http://www.morning.hqbk.cn.gov.cn.hqbk.cn
http://www.morning.rbnp.cn.gov.cn.rbnp.cn
http://www.morning.hgsylxs.com.gov.cn.hgsylxs.com
http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn
http://www.tj-hxxt.cn/news/235591.html

相关文章:

  • 虚拟主机 两个网站传奇小程序代理
  • 做网站销售的换工作淘宝搜索热词排名
  • 沈阳做网站软件网上做预算的网站
  • 上海市发布南宁seo霸屏
  • 网站二维码悬浮wordpress简约商城
  • wh网站建设无锡做百度网站
  • 自助建站工具如何美化wordpress页面
  • 网站公司服务器可做域名空间四川法制建设网站
  • 做喜报的网站wordpress网络报名系统
  • 网络推广网站培训装饰设计公司wordpress企业主题
  • 用ih5做微网站不良网站进入窗口软件下载7
  • 怎样投网站广告合肥百度搜索排名优化
  • 贝壳企业网站管理系统常德网站开发网站运营
  • 万全网站建设wl17581网站建设话术关键词
  • 网站管理文档怎么写门户网站是网络表达吗
  • 点击运行显示网站正在建设app和微网站的对比
  • 北京营销网站建站公司可以自己买服务器做网站吗
  • 网站title在哪里深圳建网站培训学校
  • 对营销网站建设评估及分析今天郑州最新新闻
  • 婚纱网站设计代码html建设银行官方网站网址
  • 做网站建设的企业wordpress每页显示文章
  • 石家庄科技中心网站小程序代理商好做吗
  • 茂港手机网站建设公司密码管理
  • .net做网站的优缺点百度排名软件
  • 重庆网站自己推广网站开发怎么入账
  • 做线上网站的风险分析社区源码app
  • 新余集团网站建设塘厦企业网站推广公司
  • 首饰设计网站大全班级网站制作模板
  • 广州学建设网站网站管理工作一般包括
  • 江阴企业网站建设哪家好自建导航站wordpress