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

在线网站模板开发一款社交app需要多少钱

在线网站模板,开发一款社交app需要多少钱,关键词查询网站的工具,做物流网站多少钱MyBatis基础 MyBatis简介MyBatis特性MyBatis下载和其他持久化层技术对比 核心配置文件详解默认的类型别名 搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能 MyBatis获取参数值的两种方式重点单个字面量类型的参数多个字面量类型的参数map集合类型的参数实体类类型的参数使用Param标识参数总结 MyBatis的增删改查 MyBatis简介 MyBatis特性 MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解用于配置和原始映射将接口和Java的POJOPlain Old Java Objects,普通的Java对象映射成数据库中的记录MyBatis是一个半自动的ORMObject Relation Mapping框架 MyBatis下载 MyBatis下载地址https://github.com/mybatis/mybatis-3 和其他持久化层技术对比 JDBC SQL夹杂在Java代码中耦合度高导致硬编码内伤维护不易且实际开发需求中SQL有变化频繁修改的情况多见代码冗长开发效率低 Hibernate和JPA 操作简便开发效率高程序中的长难复杂SQL需要绕过框架内部自动生产的SQL不容易做特殊优化基于全映射的全自动框架大量的字段的POJO进行部分映射时比较困难反射操作太多导致数据库性能下降 MyBatis 轻量级性能出色SQL和Java编码分开功能边界清晰。Java代码专注业务SQL语句专注数据开发效率稍逊于Hibernate但是完全能够接受 核心配置文件详解 核心配置文件中的标签必须按照固定的顺序(有的标签可以不写但顺序一定不能乱) properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//MyBatis.org//DTD Config 3.0//ENhttp://MyBatis.org/dtd/MyBatis-3-config.dtd configuration!--引入properties文件此时就可以${属性名}的方式访问属性值--properties resourcejdbc.properties/propertiessettings!--将表中字段的下划线自动转换为驼峰--setting namemapUnderscoreToCamelCase valuetrue/!--开启延迟加载--setting namelazyLoadingEnabled valuetrue//settingstypeAliases!--typeAlias设置某个具体的类型的别名属性type需要设置别名的类型的全类名alias设置此类型的别名且别名不区分大小写。若不设置此属性该类型拥有默认的别名即类名--!--typeAlias typecom.atguigu.mybatis.bean.User/typeAlias--!--typeAlias typecom.atguigu.mybatis.bean.User aliasuser/typeAlias--!--以包为单位设置改包下所有的类型都拥有默认的别名即类名且不区分大小写--package namecom.atguigu.mybatis.bean//typeAliases!--environments设置多个连接数据库的环境属性default设置默认使用的环境的id--environments defaultmysql_test!--environment设置具体的连接数据库的环境信息属性id设置环境的唯一标识可通过environments标签中的default设置某一个环境的id表示默认使用的环境--environment idmysql_test!--transactionManager设置事务管理方式属性type设置事务管理方式typeJDBC|MANAGEDtypeJDBC设置当前环境的事务管理都必须手动处理typeMANAGED设置事务被管理例如spring中的AOP--transactionManager typeJDBC/!--dataSource设置数据源属性type设置数据源的类型typePOOLED|UNPOOLED|JNDItypePOOLED使用数据库连接池即会将创建的连接进行缓存下次使用可以从缓存中直接获取不需要重新创建typeUNPOOLED不使用数据库连接池即每次使用连接都需要重新创建typeJNDI调用上下文中的数据源--dataSource typePOOLED!--设置驱动类的全类名--property namedriver value${jdbc.driver}/!--设置连接数据库的连接地址--property nameurl value${jdbc.url}/!--设置连接数据库的用户名--property nameusername value${jdbc.username}/!--设置连接数据库的密码--property namepassword value${jdbc.password}//dataSource/environment/environments!--引入映射文件--mappers!-- mapper resourceUserMapper.xml/ --!--以包为单位将包下所有的映射文件引入核心配置文件注意1. 此方式必须保证mapper接口和mapper映射文件必须在相同的包下2. mapper接口要和mapper映射文件的名字一致--package namecom.atguigu.mybatis.mapper//mappers /configuration默认的类型别名 搭建MyBatis 开发环境 IDEidea 构建工具maven3.8.6 MySQL版本MySQL5.7 MyBatis版本3.5.11 创建maven工程 打包方式jar引入依赖 dependencies!--Mybatis核心--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.11/version/dependency!--junit测试--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency!--MySQL驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.3/version/dependency /dependencies创建MyBatis的核心配置文件 习惯上命名为mybatis-config.xml这个文件名仅仅只是建议并非强制要求将来整合Spring之后这个配置文件可以省略所以大家操作时可以直接复制、粘贴 核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息 核心配置文件存放的位置是src/main/resources目录下 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd configuration!--配置连接数据库的环境--environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value$com.mysql.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/mybatis/property nameusername valueroot/property namepassword value123456//dataSource/environment/environments!--引入映射文件--mappersmapper resourceorg/mybatis/example/BlogMapper.xml//mappers /configuration创建mapper接口 MyBatis中的mapper接口相当于以前的dao。但是区别在于mapper仅仅是接口我们不需要提供实现类。 public interface UserMapper {/*** 添加用户信息*/int insertUser();}创建MyBatis的映射文件 相关概念ORMObject Relationship Mapping对象关系映射。 对象Java的实体类对象关系关系型数据库映射二者之间的对应关系 Java概念数据库概念类表属性字段/列对象记录/行 映射文件的命名规则表对应的实体类的类名 Mapper.xml 例如表t_user映射的实体类为User所对应的映射文件为UserMapper.xml 因此一个映射文件对应一个实体类对应一张表的操作 MyBatis映射文件用于编写SQL访问以及操作表中的数据 MyBatis映射文件存放的位置是src/main/resources/mappers目录下 MyBatis中可以面向接口操作数据要保证两个一致 2.1 mapper接口的全类名和映射文件的命名空间namespace保持一致 2.2 mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacenuc.kang.mapper.UserMapperinsert idinsertUserinsert into t_user values(null,admin,123456,23,男,12345qq.com)/insert/mapper通过junit测试功能 SqlSession代表Java程序和数据库之间的会话。HttpSession是Java程序和浏览器之间的会话SqlSessionFactory是“生产”SqlSession的“工厂”工厂模式如果创建某一个对象使用的过程基本固定那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中以后都使用这个工厂类来“生产”我们需要的对象 public class UserMapperTest {Testpublic void testInsertUser() throws IOException {//读取MyBatis的核心配置文件InputStream is Resources.getResourceAsStream(mybatis-config.xml);//获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();//通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory生产SqlSession对象SqlSessionFactory sqlSessionFactory sqlSessionFactoryBuilder.build(is);//获取sqlSession此时通过SqlSession对象所操作的sql都必须手动提交或回滚事务//SqlSession sqlSession sqlSessionFactory.openSession();//创建SqlSession对象此时通过SqlSession对象所操作的sql都会自动提交 SqlSession sqlSession sqlSessionFactory.openSession(true);//通过代理模式创建UserMapper接口的代理实现类对象UserMapper userMapper sqlSession.getMapper(UserMapper.class);//调用UserMapper接口中的方法就可以根据UserMapper的全类名匹配元素文件通过调用的方法名匹配映射文件中的SQL标签并执行标签中的SQL语句int result userMapper.insertUser();//提交事务//sqlSession.commit();System.out.println(result: result);} }此时需要手动提交事务如果要自动提交事务则在获取sqlSession对象时使用SqlSession sqlSession sqlSessionFactory.openSession(true);传入一个Boolean类型的参数值为true这样就可以自动提交 加入log4j日志功能 加入依赖 !-- log4j日志 -- dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.17/version /dependency加入log4j的配置文件 log4j的配置文件名为log4j.xml存放的位置是src/main/resources目录下日志的级别FATAL(致命)ERROR(错误)WARN(警告)INFO(信息)DEBUG(调试) 从左到右打印的内容越来越详细 ?xml version1.0 encodingUTF-8 ? !DOCTYPE log4j:configuration SYSTEM log4j.dtd log4j:configuration xmlns:log4jhttp://jakarta.apache.org/log4j/appender nameSTDOUT classorg.apache.log4j.ConsoleAppenderparam nameEncoding valueUTF-8 /layout classorg.apache.log4j.PatternLayoutparam nameConversionPattern value%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n //layout/appenderlogger namejava.sqllevel valuedebug //loggerlogger nameorg.apache.ibatislevel valueinfo //loggerrootlevel valuedebug /appender-ref refSTDOUT //root /log4j:configurationMyBatis获取参数值的两种方式重点 MyBatis获取参数值的两种方式${}和#{}${}的本质就是字符串拼接#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql若为字符串类型或日期类型的字段进行赋值时需要手动加单引号但是#{}使用占位符赋值的方式拼接sql此时为字符串类型或日期类型的字段进行赋值时可以自动添加单引号 单个字面量类型的参数 若mapper接口中的方法参数为单个的字面量类型此时可以使用${}和#{}以任意的名称最好见名识意获取参数的值注意${}需要手动加单引号 !--User getUserByUsername(String username);-- select idgetUserByUsername resultTypeUserselect * from t_user where username #{username} /select!--User getUserByUsername(String username);-- select idgetUserByUsername resultTypeUser select * from t_user where username ${username} /select多个字面量类型的参数 若mapper接口中的方法参数为多个时此时MyBatis会自动将这些参数放在一个map集合中 以arg0,arg1…为键以参数为值以param1,param2…为键以参数为值 因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值注意${}需要手动加单引号。 使用arg或者param都行要注意的是arg是从arg0开始的param是从param1开始的 !--User checkLogin(String username,String password);-- select idcheckLogin resultTypeUser select * from t_user where username #{arg0} and password #{arg1} /select!--User checkLogin(String username,String password);-- select idcheckLogin resultTypeUserselect * from t_user where username ${param1} and password ${param2} /selectmap集合类型的参数 若mapper接口中的方法需要的参数为多个时此时可以手动创建map集合将这些数据放在map中只需要通过${}和#{}访问map集合的键就可以获取相对应的值注意${}需要手动加单引号 !--User checkLoginByMap(MapString,Object map);-- select idcheckLoginByMap resultTypeUserselect * from t_user where username #{username} and password #{password} /selectTest public void checkLoginByMap() {SqlSession sqlSession SqlSessionUtils.getSqlSession();ParameterMapper mapper sqlSession.getMapper(ParameterMapper.class);MapString,Object map new HashMap();map.put(usermane,admin);map.put(password,123456);User user mapper.checkLoginByMap(map);System.out.println(user); }实体类类型的参数 若mapper接口中的方法参数为实体类对象时此时可以使用${}和#{}通过访问实体类对象中的属性名获取属性值注意${}需要手动加单引号 !--int insertUser(User user);-- insert idinsertUserinsert into t_user values(null,#{username},#{password},#{age},#{sex},#{email}) /insertTest public void insertUser() {SqlSession sqlSession SqlSessionUtils.getSqlSession();ParameterMapper mapper sqlSession.getMapper(ParameterMapper.class);User user new User(null,Tom,123456,12,男,123321.com);mapper.insertUser(user); }使用Param标识参数 可以通过Param注解标识mapper接口中的方法参数此时会将这些参数放在map集合中 以Param注解的value属性值为键以参数为值以param1,param2…为键以参数为值 只需要通过${}和#{}访问map集合的键就可以获取相对应的值注意${}需要手动加单引号 !--User CheckLoginByParam(Param(username) String username, Param(password) String password);--select idCheckLoginByParam resultTypeUserselect * from t_user where username #{username} and password #{password}/selectTest public void checkLoginByParam() {SqlSession sqlSession SqlSessionUtils.getSqlSession();ParameterMapper mapper sqlSession.getMapper(ParameterMapper.class);mapper.CheckLoginByParam(admin,123456); }总结 建议分成两种情况进行处理 实体类类型的参数使用Param标识参数 MyBatis的增删改查 添加 !--int insertUser();-- insert idinsertUserinsert into t_user values(null,admin,123456,23,男,12345qq.com) /insert删除 !--int deleteUser();--delete iddeleteUserdelete from t_user where id 6/delete修改 !--int updateUser();--update idupdateUserupdate t_user set username 张三 where id 5/update查询一个实体类对象 !--User getUserById();-- select idgetUserById resultTypecom.atguigu.mybatis.bean.User select * from t_user where id 2 /select查询集合 !--ListUser getUserList();-- select idgetUserList resultTypecom.atguigu.mybatis.bean.Userselect * from t_user /select注意 查询的标签select必须设置属性resultType或resultMap用于设置实体类和数据库表的映射关系 resultType自动映射用于属性名和表中字段名一致的情况resultMap自定义映射用于一对多或多对一或字段名和属性名不一致的情况 当查询的数据为多条时不能使用实体类作为返回值只能使用集合否则会抛出异常TooManyResultsException但是若查询的数据只有一条可以使用实体类或集合作为返回值
http://www.zqtcl.cn/news/316684/

相关文章:

  • 青岛网站推广方案营销自动化平台
  • 管理信息系统与网站建设有什么区别python版wordpress
  • 济南市建设行政主管部门网站公众号登录入口官网
  • 深圳苏州企业网站建设服务企业做网站需要什么条件
  • 电脑什么网站可以做长图攻略公众号 微网站开发
  • 网站核检单怎么用小皮创建网站
  • 企业网站托管平台有哪些烟台高新区建设局网站
  • 石家庄网站做网站和县网页定制
  • 网站个人备案和企业备案潍坊公司注册网站
  • 建个网站的流程互联网裁员
  • 设置网站模板汉口网站建设公司
  • 网站对一个关键词做排名怎么做网站建设 图纸网
  • 什么网站比较吸引流量网页设计代码td
  • 克隆网站怎么做后台wordpress网站缩
  • 仁怀哪儿做网站泰安市建设局
  • 做网站和编程有关系吗手机怎么做电子书下载网站
  • 网站做关键词排名网站快速排名的方法
  • 有网站模板如何预览泉州app开发
  • 网站自助建站系统重庆皇华建设集团有限公司网站
  • 云速成美站做网站好吗汕头制作网站
  • 搜狗搜索网站提交入口在哪里做卖车网站
  • 河南省百城建设提质网站新人怎么做电商
  • 建设机械网站制作创建个人网站教案
  • 无锡网站推广装修风格大全2023新款
  • 在线设计logo免费网站如何在网站上添加qq
  • 高端网站建设哪里好网站建设与管理案例教程
  • 云南专业网站建设上海百度移动关键词排名优化
  • 如何搭建一个完整的网站wordpress 小程序开发
  • 外贸网站建设关键点为网站网站做代理被判缓刑
  • 网站免费正能量小说台州百度关键词优化