首页
统计
4K壁纸
留言
Search
1
自动采集头像+壁纸+流量主小程序
935 阅读
2
【腾讯云】低价服务器活动和新用户活动
507 阅读
3
Spring MVC 结构体系
426 阅读
4
Spring Di依赖注入环境
384 阅读
5
springboot
341 阅读
技术分享
学习笔记
jsp
Maven
Mybatis
Spring
Hibernate
系统源码
网站源码
APP源码
微信程序
小程序
登录
/
注册
Search
标签搜索
学习笔记
Hibernate
小程序
Mybatis
源码
教程
笔记
Ajax
微信
活动
福利
MyEclipse 10
笔记fen'x
壁纸小程序
微信程序
HQL
笔记分享
Mybatis-Plus
小新
累计撰写
44
篇文章
累计收到
48
条评论
首页
栏目
技术分享
学习笔记
jsp
Maven
Mybatis
Spring
Hibernate
系统源码
网站源码
APP源码
微信程序
小程序
页面
统计
4K壁纸
留言
搜索到
9
篇与
技术分享
的结果
2022-04-10
Hibernate 关系映射
关联关系以部门(Dept)和员工(Emp)为例,一个部门下有多个员工,而一个员工只能属于一个部门,从Emp到Dept的关联是多对一关联,而从Dept到Emp是一对多关联。建立单向多对一关联关系在Emp类中需要定义员工Dept属性,而在Dept类中无需定义存放Emp对象的集合{tabs}{tabs-pane label="Dept实体类"}public class Dept implements java.io.Serializable { private Byte deptno; private String dname; private String loc; //此处省略无参构造方法,以及属性的get和set方法{/tabs-pane}{tabs-pane label="Emp实体类"}public class Emp implements java.io.Serializable { private Short empno; private Dept dept; //所属部门 private String ename; //此处省略无参构造方法,以及属性的get和set方法{/tabs-pane}{/tabs}因此需要把Dept类映射到Dept表非常简单,需要配置以下 Dept.hbm.xml的主要内容<hibernate-mapping> <class name="com.xyh.pojo.Dept" table="DEPT" schema="SCOTT"> <id name="deptno" type="java.lang.Byte"> <column name="DEPTNO" precision="2" scale="0" /> <generator class="assigned" /> </id> <property name="dname" type="java.lang.String"> <column name="DNAME" length="14" /> </property> <property name="loc" type="java.lang.String"> <column name="LOC" length="13" /> </property> </class> </hibernate-mapping>在Emp类中,其dept属性是Dept类型,和Emp表的外键DeptNo对应,所有不能使用 <property>元素来映射,而要使用<many-to-one>元素 Emp.hbm.xml的主要内容<hibernate-mapping> <class name="com.xyh.pojo.Emp" table="EMP" schema="SCOTT"> <id name="empno" type="java.lang.Short"> <column name="EMPNO" precision="4" scale="0" /> <generator class="assigned" /> </id> <many-to-one name="dept" class="com.xyh.pojo.Dept"> //对应的外键 <column name="DEPTNO" precision="2" scale="0" /> </many-to-one> <property name="ename" type="java.lang.String"> <column name="ENAME" length="10" /> </property> </class> </hibernate-mapping><many-to-one>元素建立了Emp表的外键DEPTNO和dept属性之间的映射,它包括以下属性name:设定持久化类的属性名,此处为EMP类的dept属性column:设定持久化类的属性对应的表的外键,此处为EMP表的外键DEOTNOclass:持久化类的属性的类型,此处设定为dept属性为Dept类型目前,Emp类到Dept类的单向多对一映射就完成了!
2022年04月10日
12 阅读
0 评论
0 点赞
2022-02-15
Spring MVC + Spring + Mybatis的框架搭建
JSON对象的处理实现步骤:改造后台实现改造Contriller层 - UserContriller.javafastjson-1.2.13.jaruserCodelsExit()方法:同名验证入参:userCode验证结果:HashMap返回值:Object(JSON对象)@ResponseBody>作用:将标识注解注解的处理方法的返回结果直接写入HTTPResponse Bodyz中,一般会在异步互殴去数据时使用解决JSON数据传递到的中文乱码默认是:ISO-8859-1解决方案一(不推荐)@RequestMapping(value="/view",method=RequestMethod.GET,produces={"application/json;charset=UTF-8"})解决方案二装配消息转换器StringHttpMessageConverter,设置字符编码为UTF-8supportedMediaTypes属性指定媒体类型:application/json字符编码:UTF-8日期格式转换解决方案一(不推荐)@DateTimeFormat(pattern="yyyy-MM-dd"); //入参时,字符串日期格式转换 @JSONField(format="yyyy-MM-dd");//返回json字符串时,日期格式(默认时时间戳)显示转换成指定格式 private Date borthday; //出生日期解决方案二配置FastJson的消息转换器FastJsonHttpMessageConverter设置features属性,指定输出时的日期转换器为WriteDateUseDateFormat注意:FastJson指定了默认的返回日期类型 :yyyy-MM-dd HH :mm:ss故对于特殊类型字段,可使用@JSONFild来控制数据转换和格式化DataBinder数据绑定的核心部件核心调度ConversionServiceSpring类型转换体系的核心接口解决前台form表单中时间字符串到后台Date数据类型的转换问题注意:配置了<mvc:annotation-driven/>标签 ,并没有配置ConversionService,也能通过格式来注解日期的转换问题实现步骤:一、定义一个类(StringToDateConverter.java)实现convert() 方法:完成字符串到java.utll.Date类型指定格式的转换装配自定义的ConversionService二、使用@InitBinder装配自定义编辑器(不使用) BaseCotroller.java 标注@initBinder 注意:标注了@InitBinder注解的方法会在控制器初始化时调用 修改UserController.java ,继承BaseController
2022年02月15日
99 阅读
0 评论
0 点赞
2022-01-18
Spring MVC 单例模式
单例模式单例模式:系统运行期间,有且仅有一个实例一个类只有一个实例 -----最基本的它提供私有构造器它必须自行创建这个实例定义了静态的该类私有对象它必须自行项整个系统提供这个实例提供一个静态的公有方法,返回创建或者获取本身的静态私有对象懒汉模式在类加载时不创建实例,采用延迟加载的方式,在运行调用时创建实例特点线程不安全延迟加载(lazy Loading)如何解决线程安全问题同步(synchronized)package com.xyh.sin; /** * 懒汉模式 * @author Lenovo * */ public class single2 { private single2(){} private static single2 s2; /** * 延迟加载:类加载时在调用方法时(使用),创建实例 * @return */ public synchronized static single2 getInstance(){ if(s2 == null){ s2 = new single2(); } return s2; } } 饿汉模式在类加载的时候,就完成初始化特点线程安全不具备延迟加载的特性package com.xyh.sin; /** * 饿汉模式 * @author Lenovo * */ public class single1 { //1.提供私有构造器 private single1(){} //2.创建静态私有对象 private static single1 s = new single1(); //3.提供公有的对外返回该对象的静态方法 public static single1 getInstance(){ return s; } }饿汉模式-内部类模式package com.xyh.sin; /** * 饿汉模式-内部类模式 * @author Lenovo * */ public class single1 { //1.提供私有构造器 private single1(){} private static class lbl{ private static single1 s = new single1(); public static single1 getInstance(){ return s; } } //3.提供公有的对外返回该对象的静态方法 public static single1 getInstance(){ return lbl.getInstance(); } }
2022年01月18日
49 阅读
0 评论
0 点赞
2022-01-17
Spring MVC 结构体系
MVC设计模式视图(View) -对应组件:JSP或者HTML文件控制器(Controller)-对应组件:Servlet模型(Model)- 对应组件:javaBeanJSP Model2:JSP:负责生成动态网页Servlet:负责流程控制javaBean:负责业务逻辑处理MVC处理过程- 控制器 接收用户请求调用模型响应用户请求选择视图显示响应结果- 视图 解析模型 接收数据更新请求 发送用户输入给控制器 允许控制器选择视图- 模型 封装应用程序状态 响应状态查询 处理业务流程 通知视图业务状态更新MVC优点多视图共享一个模型,大大提高代码得可重用性MVC三个模块相互独立,松耦合架构控制器提高了应用程序得灵活性和可配置性有利于软件工程化管理MVC缺点原理复杂增加了系统结构和实现得复杂性视图对模型数据得低效率访问Spring MVC结构最清晰得MVC Model2实现ControllerModelAndView注解驱动控制器基于注解得处理器<context:component-scan>Controller:标注一个普通得javaBean成为可以处理请求得控制器@RequestMapping:通过请求URL进行映射<mvc:annotation-driven>一键式配置,通过注解得方式进行Spring MVC开发 defaultAnnotationHandlerMapping AnnotationMethodHandlerAdapter{dotted startColor="#ff6c6c" endColor="#1989fa"/} {dotted startColor="#4eda71" endColor="#cdff1a"/}400 :参数类型转化异常Spring MVC体系结构DispatcherServlet(前端控制器) Spring MVC最核心的类 web.xml中配置Handler(处理器):对应MVC中c(Controller层)类型:Object作用:实际处理请求标注了@RequesMapping的所有方法都可以看作是一个HandlerModelAndView逻辑视图名模型对象核心组件HandlerMapping(处理器映射)BeanNameUrlHandlerMapping(默认)将请求URL映射到同名的控制器Bean上DefaultAnnotationHandleMapping将请求映射到标注@RequestMapping注解的控制器和处理方法上RequestMappingHandlerAdapterViewResolver(视图解析器)InternalResourceViewSpring MVC框架特点清醒地角色划分灵活的配置功能提供了大量的控制器接口和实现类真正做到与View层的实现无关(JSP、Velocity、Xslt等)国际化支持面向接口编程Spring提供了Web应用开发的一整流程,不仅仅是MVC,他们之间可以很方便的结合一起参数传递Controller方法中参数前加@RequestParam进行直接入参例如:@RequestMapping("/index.html") public String index(@RequestParam(required=false,defaultValue="未填写姓名") String name,@RequestParam() int age){ System.out.println("进入了index方法 name:"+name+",age:"+age); return "index.jsp"; }ModelAndView(返回数据)包含视图信息和模型数据信息4种方法 @RequestMapping("/test4.html") public String test1(@RequestParam String name,HttpServletRequest request){ request.setAttribute("msg","test4欢迎你:"+name); return "index.jsp"; } @RequestMapping("/test3.html") public String test1(@RequestParam String name,Map<String, Object> map){ map.put("msg","test3欢迎你:"+name); return "index.jsp"; } @RequestMapping("/test2.html") public String test1(@RequestParam String name,Model m){ m.addAttribute("msg","test2欢迎你:"+name); return "index.jsp"; } @RequestMapping("/test1.html") public ModelAndView test1(@RequestParam String name){ ModelAndView mv = new ModelAndView("index.jsp"); mv.addObject("msg","test1欢迎你:"+name); return mv; }
2022年01月17日
426 阅读
0 评论
0 点赞
2022-01-09
spring 实现AOP教程(IDEA篇)
搭建环境{collapse}{collapse-item label="UserService" open}package com.xyh.service; public interface UserService { public void add(); public void delete(); public void update(); public void select(); }{/collapse-item}{collapse-item label="UserServiceImpl"}package com.xyh.service; public class UserServiceImpl implements UserService{ @Override public void add() { System.out.println("增加了一个用户"); } @Override public void delete() { System.out.println("删除了一个用户"); } @Override public void update() { System.out.println("更新了一个用户"); } @Override public void select() { System.out.println("查询了一个用户"); } } {/collapse-item}{/collapse}{callout color="#1972d2"}方式一:使用原生Spring API接口{/callout}前置增强package com.xyh.log; import org.springframework.aop.MethodBeforeAdvice; import java.lang.reflect.Method; public class Log implements MethodBeforeAdvice { //method:要执行的目标对象方法 //args:参数 //target:目标对象 @Override public void before(Method method, Object[] args, Object target) throws Throwable { System.out.println(target.getClass().getName()+"类的"+method.getName()+"方法,被执行了"); } }后置增强package com.xyh.log; import org.springframework.aop.AfterReturningAdvice; import java.lang.reflect.Method; public class AfterLog implements AfterReturningAdvice { //returnValue:返回值 @Override public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable { System.out.println("执行了"+method.getName()+"方法,返回结果为;"+returnValue); } } 配置文件<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> <!--注册bean--> <bean id="userService" class="com.xyh.service.UserServiceImpl"/> <bean id="log" class="com.xyh.log.Log"/> <bean class="com.xyh.log.AfterLog" id="afterLog"></bean> <!--方式一:使用原生Spring API接口--> <!--配置aop:导入aop的约束--> <aop:config> <!--切入点 :execution:表达式 execution(返回值 要执行的位置!)--> <aop:pointcut id="pointcut" expression="execution(* com.xyh.service.UserServiceImpl.*(..))"/> <!--执行环绕增强--> <aop:advisor advice-ref="log" pointcut-ref="pointcut"/> <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/> </aop:config> </beans>{callout color="#1972d2"}方式二:自定义类{/callout}自定义的package com.xyh.diy; public class DiyPointCut { public void before(){ System.out.println("========方法执行前========"); } public void after(){ System.out.println("========方法执行后======="); } } 配置文件<bean class="com.xyh.diy.DiyPointCut" id="diyPointCut"/> <aop:config> <!--自定义切面:ref 要引用的类--> <aop:aspect ref="diyPointCut"> <!--切入点--> <aop:pointcut id="point" expression="execution(* com.xyh.service.UserServiceImpl.*(..))"/> <!--前置增强--> <aop:before method="before" pointcut-ref="point"/> <!--后置增强--> <aop:after method="after" pointcut-ref="point"/> </aop:aspect> </aop:config>{callout color="#1972d2"}方式三:使用 注解实现{/callout}增强package com.xyh.diy; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect //标注这个类是一个切面 例如: <aop:aspect ref="diyPointCut"> public class AnnotationPointCut { @Before("execution(* com.xyh.service.*.*(..))") //例如: <aop:before method="before" pointcut-ref="point"/> public void before(){ System.out.println("======方法执行前======"); } @After("execution(* com.xyh.service.*.*(..))") public void after(){ System.out.println("=======方法执行后======"); } //环绕增强 @Around("execution(* com.xyh.service.*.*(..))") public void around(ProceedingJoinPoint jp) throws Throwable { System.out.println("环绕前"); Signature signature = jp.getSignature(); //获得签名 System.out.println("signature:"+signature); Object proceed = jp.proceed(); //执行方法 System.out.println(proceed); System.out.println("环绕后"); } } 配置文件 <!--方式三:注解实现--> <bean class="com.xyh.diy.AnnotationPointCut" id="annotationPointCut"></bean> <!--开启注解支持!--> <aop:aspectj-autoproxy/>
2022年01月09日
251 阅读
0 评论
0 点赞
Spring Di依赖注入环境
构造器注入前面已经了解了set 方式注入搭建环境1.复杂类型package com.xyh.pojo; public class Address { private String address; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Address{" + "address='" + address + '\'' + '}'; } } 2.测试对象类package com.xyh.pojo; import java.util.*; public class Student { private String name; private Address address; private String[]books; private List<String> hobbys; private Map<String,String> card; private Set<String> games; private String wife; private Properties info; }3.ApplicationContext.xml {collapse}{collapse-item label="ApplicationContext 配置代码" open}<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <bean id="address" class="com.xyh.pojo.Address"> <property name="address" value="重庆市沙坪坝重庆师范大学"/> </bean> <bean id="student" class="com.xyh.pojo.Student"> <!--第一种,普通注入 : value--> <property name="name" value="小新"/> <!--bean注入 (类注入)--> <property name="address" ref="address"/> <!--数组注入--> <property name="books"> <array> <value>西游记</value> <value>斗破苍穹</value> <value>三国演义</value> <value>水浒传</value> </array> </property> <!--List注入方式--> <property name="hobbys"> <list> <value>敲代码</value> <value>玩游戏</value> <value>看动漫</value> </list> </property> <!--Map注入方式--> <property name="card"> <map> <entry key="身份证" value="8562154788795421565"></entry> <entry key="银行卡" value="2123123135321511321"></entry> </map> </property> <!--Set注入方式--> <property name="games"> <set> <value>LOL</value> <value>COC</value> <value>BOB</value> </set> </property> <!--null注入--> <property name="wife"> <null/> </property> <!--Properties注入方式--> <property name="info"> <props> <prop key="url">www.yy0228.cn</prop> <prop key="driver">JDBC</prop> <prop key="username">root</prop> <prop key="password">root</prop> </props> </property> </bean> </beans>{/collapse-item}{/collapse}4.测试类public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); Student student = (Student) context.getBean("student"); System.out.println(student); } } 截图展示
2022年01月05日
384 阅读
0 评论
0 点赞
紫色UI趣味测试微信小程序源码下载包含多种评测
简介该源码里面包含了多种评测,每一种评测都包含大多小细节小编也给它加了几个流量主位置以便大家可以更好的运营。图片 下载地址{cloud title="紫色UI趣味测试微信小程序" type="lz" url="https://ksxx.lanzouv.com/ideCfxwufdi" password=""/}
2021年12月23日
67 阅读
0 评论
0 点赞
【小新】免费领取理论永久1核1G 5带宽服务器 以及免费虚拟主机
介绍云服务器 发现一个好东西,那就是可以免费领取理论永久的服务器以及虚拟主机,大家往下看上面的图片写着首次开通24小时,可以无限延期,每次延期5天,是不是理论永久?这个不用泽楠云说吧,虽然配置不行但是还是有很多用处的,比如测试源码,等等用途。不过绑定的域名必须是备案域名领取以后我们可以选择自己想安装的系统配置如下:虚拟主机 虚拟主机我就不多说了 ,基本操作跟上面一样 看图吧 唯一的是 虚拟主机每次延期可30天哦领取地址免费理论永久服务器及虚拟主机地址: {abtn icon="" color="#ff6800" href="https://www.sanfengyun.com/" radius="" content="立即领取"/}
2021年12月09日
110 阅读
3 评论
0 点赞
【腾讯云】低价服务器活动和新用户活动
爆款1核2G服务器 【腾讯云】爆款1核2G云服务器首年48元,还有iPad Pro、Bose耳机、京东卡可以抽! 地址:https://curl.qcloud.com/MsRVuBYB爆款1核2G云服务器 【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年74元 传送门:https://curl.qcloud.com/1bs8uSDa新用户 【腾讯云】新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。 传送门:https://curl.qcloud.com/dWADDEU6企业 【腾讯云】买云服务器,参与礼品兑换、抽奖,最高送价值8000元IPad,还有Bose耳机、千元京东卡等您来! 传送门:https://curl.qcloud.com/TXew8YXo云数据库 【腾讯云】腾讯云数据库性能卓越稳定可靠,为您解决数据库运维难题 传送门:https://curl.qcloud.com/fo8EJcjf
2021年11月15日
507 阅读
5 评论
0 点赞