舒大少博客

一个95后少年的个人博客

当前时间为:
欢迎大家来到舒大少博客https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020java框架教程:jdbcTemplate的使用

2020-12-07 09:55:31
swq1822677238

2020java框架教程:jdbcTemplate的使用

1.创建项目

2.导包

3.日志文件

4.创建数据库表

5.创建工具类并连接数据库

6.创建实体类、dao、service以及实现类

使用JdbcTemplate

查询所有:

public List<Role> getAllList() {
    try{
        return jt.query("select*from role", new RowMapper<Role>() {
            @Override
            public Role mapRow(ResultSet rs, int i) throws SQLException {
                return roleMapper(rs);
            }
        });
    }catch (Exception e){}
    return null;
}

查询单个

public Role getID(int id) {
    try{
        return jt.queryForObject("select*from role where id=?", new RowMapper<Role>() {
            @Override
            public Role mapRow(ResultSet rs, int i) throws SQLException {
                return roleMapper(rs);
            }
        },id);
    }catch (Exception e){}
    return null;
}

封装Mapper方法

public Role roleMapper(ResultSet rs){
    Role r=new Role();
    try {
        r.setId(rs.getInt("id"));
        r.setNames(rs.getString("names"));
        r.setNames2(rs.getString("names2"));
        return r;
    } catch (Exception e) {}
    return null;
}

使用spring管理对象和对象间的依赖

<context:property-placeholder location="classpath:database.properties"/>
<!-- 连接池 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${driver}"/>
    <property name="jdbcUrl" value="${url}"/>
    <property name="user" value="${username}"/>
    <property name="password" value="${password}"/>
</bean>
<!-- JDBCTemplate  -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>
<!-- roleDao -->
<bean name="roleDao" class="dao.impl.RoleDaoImpl">
    <property name="jt" ref="jdbcTemplate"/>
</bean>

2020java框架教程:spring注解以及整合Junit

2020-12-05 16:02:31
swq1822677238

2020java框架教程:spring注解以及整合Junit

1.创建web项目

2.导包

3.导入配置文件log4j.properties

4.添加容器以及配置注解扫描:applicationContext.xml

<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置注解扫描,指定要扫描的包 -->
     <context:component-scan base-package="entity"/>
</beans>

5.配置注解扫描

<!–配置注解扫描,指定要扫描的包 –>

<context:component-scan base-package=”entity”/>

整合junit测试

1.导入spring-test包

2.创建实体类

在类的上方添加注解

@Component("users") 适用于所有组件
@Repository("users") 适用于持久层
@Service("users")   适用于service层
@Controller("users") 适用于控制层

等同于<bean name=”name” class=”entity.Users” />

3.创建测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RunWithTest {
    @Resource(name = "users")
    private Users users;
    @Test
    public void test(){
        System.out.println(users);
    }
}

4.指定对象的作用域是否是单例还是多例

@Scope(scopeName = "singleton")  //二选一
@Scope(scopeName = "prototype")

5.set方式注入value值

a.在私有成员变量中注入

//注入
@Value("1")
private int id;
@Value("admin")
private String name;
@Value("5200")
private double salary;
@Autowired
private Car car;

 

b.在set方法注入

6.自动装配

@AutoWired
使用@AutoWired进行自动装配,按照对象的类型进行自动装配

@Component
public class Car {
    @Value("摩拜单车")
    private String name;
    @Value("black")
    private String color;
}
public class Users {
    @Autowired 自动装配
    private Car car;
}

自动装配存在的问题:如果一个类型有多个对象,那么可以采用以下的方式

先在配置文件中添加

<bean name="car1" class="entity.Car">
    <property name="name" value="保时捷"/>
    <property name="color" value="red"/>
</bean>
<bean name="car2" class="entity.Car">
    <property name="name" value="捷达"/>
    <property name="color" value="white"/>
</bean>

A.使用@Qualifier指定具体的对象

@Autowired
@Qualifier("car1")
private Car car;

B.使用 @Resource 指定具体的对象

@Autowired
@Resource(name="car2")
private Car car;

7.初始化方法和销毁方法

@PostConstruct 
public void init(){
    System.out.println("初始化");
}
@PreDestroy
public void destroy(){
    System.out.println("销毁");
}

2020javaweb框架教程:spring对象创建的方式

2020-12-04 15:18:09
swq1822677238

2020javaweb框架教程:spring对象创建的方式

实例工厂方法

创建工厂类,写个方法返回类对象:

public class Factory {
    public Users createUsers2(){
        System.out.println("实例工厂创建");
        return new Users();
    }
}

(更多…)

2020javaweb框架教程:spring对象创建的细节

2020-12-04 14:35:11
swq1822677238

2020javaweb框架教程:spring对象创建的细节

单例和多例

1.默认情况下bean是单例的,scope=”singleton’;
2.多例配置:scope=”prototype”;
3.scope=”request”;
4.scope=”session”;

<!-- singleton是单例 获取的对象都是同一个地址 -->
<bean name="users2" class="entity.Users" scope="singleton"></bean>
<!-- prototype 是 多例 每次构建对象都 new一个新的地址 -->
<bean name="users2" class="entity.Users" scope="prototype"></bean>

(更多…)

2020javaweb框架教程:spring的HelloWorld

2020-12-04 11:37:51
swq1822677238

2020javaweb框架教程:spring的HelloWorld

1.创建web项目

2.引入jar包

3.引入配置文件

log4j.properties
(更多…)

2020javaweb框架教程之spring入门

2020-11-29 16:14:30
swq1822677238

2020javaweb框架教程之spring入门

1.什么是spring

spring是一个框架,核心思想IOC、AOP。
简化企业开发,帮助分离对象之间的依赖关系。

IOC:Inversion Of Control 控制反转
DI:dependency Injection 依赖注入
AOP:Aspect Oriented Programming 面向切面编程

2.spring能解决的问题

解耦应用程序,简化开发流程。
AOP支持,声明式事务,集成junit4,方便集成各种开源的优秀框架。
降低JavaEE API的使用难度

3.spring的组成

2020javaweb框架教程之spring的Bean细节

2020-11-29 16:00:35
swq1822677238

2020javaweb框架教程之spring的Bean细节

1.Bean创建原理

反射:加载类对象,默认调用无参构造,创建对象。

<bean class="bean.Users" id="users" />
public void classpaths(){//反射
    Class<?> u=null;
    try {
        u = Class.forName("bean.Users");
        Constructor<?> constructor = u.getConstructor();
        Users o = (Users) constructor.newInstance();
        System.out.println(o);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

2.Bean创建模式

(更多…)

2020javaweb框架教程之spring概述以及配置

2020-11-28 15:43:53
swq1822677238

2020javaweb框架教程之spring概述以及配置

spring

官网:https://spring.io

作用:项⽬管理。 管理组件(对象 DAO,Service,Controller)

spring工厂搭建

1.导入依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>4.3.6.RELEASE</version>
</dependency>

2.配置文件

作用:描述哪些组件需要spring⽣产,管理

文件位置:src–>–>main–>resources目录

文件名随意,如:applicationContext.xml

<?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.xsd">

    <!-- 作⽤:声明需要spring ⽣产的组件 -->
    <!-- UserDAOImpl组件 id="组件标识" class="组件类型" -->
    <bean id="userDAO" class="dao.impl.UsersDaoImpl"/>

</beans>

3.启动工厂

工厂接口:ApplicationContext
实现类:ClassPathXmlApplicationContext

service无序调用dao的实现类,直接创建dao并添加set/get方法,然后在applicationContext.xml配置

<!-- spring生成该对象,对象中有一个属性需要赋值-->
<bean id="userService" class="service.impl.UsersServiceImpl">
<!--  给属性 UsersDao 的变量 赋值,值:id="userDAO"   -->
<property name="ud" ref="userDAO"/>
</bean>

然后再去工厂去生成一个

UsersService us = context.getBean("userService", UsersService.class);
us.insert(new Users());

2020javaweb框架教程之maven特性

2020-11-28 11:08:03
swq1822677238

2020javaweb框架教程之maven特性

1.传递性

所谓传递性,是指,在项⽬中导⼊了依赖A,⽽A内部依赖了B,则A会⾃动触发B也被导⼊项⽬

好处:没必要导⼊所有依赖在项⽬中,传递性会⾃动导⼊⼀些依赖。简化依赖导⼊管理

坏处:jar冲突

jar冲突:A依赖B B依赖C和d-1.0 c依赖d-2.0。则此时导⼊A依赖,那么项⽬中会采⽤d-1.0 还是 d-2.0

maven默认的选择原则是:最短路径

d-1.0的路径 A->B->d-1.0
d-2.0的路径 A->B->C->d-2.0 则最终选择的是d-1.0

如果路径相等,则先声明的优先

解决方案:

(更多…)

2020javaweb框架教程之maven的aliyun仓库

2020-11-28 10:24:22
swq1822677238

2020javaweb框架教程之maven的aliyun仓库

在maven安装目录conf目录下打开settings.xml,添加镜像

<mirrors>
<mirror>
<id>aliyun</id>
<!– 中⼼仓库的 mirror(镜像) –>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<!– aliyun仓库地址 以后所有要指向中⼼仓库的请求,都由aliyun仓库接替–>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>

2020javaweb框架教程之maven生命周期

2020-11-28 10:19:46
swq1822677238

2020javaweb框架教程之maven生命周期

依赖生命周期

<dependency>
  <!-- jstl 支持 -->
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
  <scope>compile</scope><!-- 生命周期 -->
</dependency>

maven生命周期如下

compile:默认值,适⽤于所有阶段(测试,编译,运⾏,打包),会随着项⽬⼀起发布(被打包)

provided:类似compile,期望JDK、容器或使⽤者会提供这个依赖。如servlet.jar,参与测试,编译,不会被打包

runtime:只在运⾏时使⽤,如 jdbc6.jar,适⽤运⾏和测试阶段,会被⼀起发布

test:只在测试时使⽤,⽤于编译和运⾏测试代码,如 junit.jar,不会随项⽬发布

system:类似provided,但Maven不会在Repository中查找它,要在本地磁盘⽬录中查找,参与编译,测试,打包,运⾏。

2020javaweb框架教程之idea配置maven以及配置Tomcat

2020-11-28 10:08:21
swq1822677238

2020javaweb框架教程之idea配置maven以及配置Tomcat

idea配置maven

选择骨架

创建maven项目,选择骨架


项目结构

java项目:
1.src/main/java 存放源代码,建包,放项⽬中代码(service,dao,User,….)
2.src/main/resources 书写配置⽂件,项⽬中的配置⽂件(jdbc.properties)
3.src/test/java 书写测试代码,项⽬中测试案例代码
4.src/test/resources 书写测试案例相关配置⽂件
5.项⽬根/pom.xml (project object model) maven项⽬核⼼⽂件,其中定义项⽬构建⽅式,声明依赖等
注意:项⽬中的建包,建类,执⾏,都和普通项⽬⽆差异

导入依赖jar

建好项⽬后,需要导⼊需要的jar,要通过【坐标】
1. 每个构件都有⾃⼰的坐标(标识) = groupId + artifactId + version = 项⽬标识 + 项⽬名 + 版本
2. 在maven项⽬中只需要配置坐标,maven便会⾃动加载对应依赖。删除坐标则会移除依赖
3. jar包并不会导⼊到项⽬⽬录中,只是maven帮助做了关联。但在打包部署项⽬时会携带对应依赖
4. ⽽且,如果导⼊了依赖A,⽽A中⼜依赖了B,则B会被⾃动加载。

查找依赖

依赖查找服务:https://mvnrepository.com/ ,获得依赖的坐标,在maven项⽬中导⼊。

导入依赖

在项目的pom文件中:

<dependency>
  <!-- jstl 支持 -->
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency><!-- 通过坐标导入依赖 -->

同步依赖

创建javaweb项目导入依赖

<dependency>
  <!-- jstl 支持 -->
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <!-- servlet编译环境 -->
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <!-- jsp编译环境 -->
  <groupId>javax.servlet</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.0</version>
  <scope>provided</scope>
</dependency>

配置Tomcat





2020javaweb框架之maven概述和仓库了解以及骨架定制

2020-11-28 10:05:58
swq1822677238

2020javaweb框架之maven概述和仓库了解以及骨架定制

什么是maven?

Maven是⼀个基于项⽬对象模型(POM)的概念的纯java开发的开源的项⽬管理⼯具。

maven下载

http://maven.apache.org/download.cgi

maven安装:

解压后放在纯英文目录下

maven目录结构

bin:含有mvn运行的脚本
boot:含有plexus-classworlds类加载器框架,Maven 使⽤该框架加载⾃⼰的类库
conf:含有settings.xml配置⽂件
lib:含有Maven运⾏时所需要的java类库
(更多…)