一个完整的Mybatis应该有的文件格式。entity包放置实体类,java中的mapper包放置mapper的接口,resources中的mapper包放置mapper接口的xml配置文件,这两个包的路径一定要一模一样。然后是util包中的工具类还有src下的核心配置文件。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjjgroupId>
<artifactId>Mybatis_002artifactId>
<version>1.0-SNAPSHOTversion>
<name>Mybatis_002name>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.6version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.2.7version>
dependency>
dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-pluginartifactId>
<version>3.1.0version>
plugin>
<plugin>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
plugin>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
plugin>
<plugin>
<artifactId>maven-jar-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-install-pluginartifactId>
<version>2.5.2version>
plugin>
<plugin>
<artifactId>maven-deploy-pluginartifactId>
<version>2.8.2version>
plugin>
<plugin>
<artifactId>maven-site-pluginartifactId>
<version>3.7.1version>
plugin>
<plugin>
<artifactId>maven-project-info-reports-pluginartifactId>
<version>3.0.0version>
plugin>
plugins>
pluginManagement>
build>
project>
<configuration>
<properties resource="jdbc.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
settings>
<typeAliases>
<typeAlias type="com.xjj.entity.Student" alias="student"/>
<package name="com.xjj.entity"/>
typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="com/xjj/mapper/StudentMapper.xml"/>
mappers>
configuration>
package com.xjj.entity;
public class Student {
private Integer student_id;
private String student_name;
public Integer getStudent_id() {
return student_id;
}
public void setStudent_id(Integer student_id) {
this.student_id = student_id;
}
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
}
package com.xjj.mapper;
import com.xjj.entity.Student;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
public interface StudentMapper {
Student querybyname(String student_name);
Student querybyidname(@Param("student_id") int student_id,@Param("student_name") String student_name);
Student querybystudent(Student student);
Student querybymap(Map<String,Object> map);
Student querybymanystudent(@Param("student1") Student student1,@Param("student2") Student student2);
}
<mapper namespace="com.xjj.mapper.StudentMapper">
<select id="querybyname" resultType="com.xjj.entity.Student">
select * from student where student_name=#{student_name}
select>
<select id="querybyidname" resultType="com.xjj.entity.Student">
select * from student where student_name=#{student_name} and student_id=#{student_id}
select>
<select id="querybystudent" resultType="com.xjj.entity.Student">
select * from student where student_id=#{student_id} and student_name=#{student_name}
select>
<select id="querybymap" resultType="com.xjj.entity.Student">
select * from student where student_id=#{map_student_id} and student_name=#{map_student_name}
select>
<select id="querybymanystudent" resultType="com.xjj.entity.Student">
select * from student where student_id=#{student1.student_id} and student_name=#{student2.student_name}
select>
mapper>
package com.xjj.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Util {
private static SqlSessionFactory sqlSessionFactory; //保证是一个单例
static {
String resource="mybatis.cfg.xml";
InputStream in=null;
try {
in=Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(in!=null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
username=root
password=123
log4j.rootLogger=ERROR, stdout
log4j.logger.com.xjj.mapper=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
package com.xjj;
import com.xjj.entity.Student;
import com.xjj.mapper.StudentMapper;
import com.xjj.util.Util;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class AppTest
{
@Test
public void demo() {
SqlSession sqlSession= Util.getSession();
StudentMapper studentmapper=sqlSession.getMapper(StudentMapper.class);
Student stu;
stu=studentmapper.querybyname("上");
System.out.println("学生id:"+stu.getStudent_id()+",学生姓名:"+stu.getStudent_name());
stu=studentmapper.querybyidname(2,"上山");
System.out.println("学生id:"+stu.getStudent_id()+",学生姓名:"+stu.getStudent_name());
Student student1=new Student();
student1.setStudent_id(4);
student1.setStudent_name("上杉");
stu=studentmapper.querybystudent(student1);
System.out.println("学生id:"+stu.getStudent_id()+",学生姓名:"+stu.getStudent_name());
Student student2=new Student();
student2.setStudent_id(5);
student2.setStudent_name("上杉");
stu=studentmapper.querybymanystudent(student1,student2);
System.out.println("学生id:"+stu.getStudent_id()+",学生姓名:"+stu.getStudent_name());
Map<String,Object> map=new HashMap<>();
map.put("map_student_id",3);
map.put("map_student_name","上山越");
stu=studentmapper.querybymap(map);
System.out.println("学生id:"+stu.getStudent_id()+",学生姓名:"+stu.getStudent_name());
sqlSession.commit();
sqlSession.close();
}
}
package com.xjj.mapper;
import com.xjj.entity.Student;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface StudentMapper {
List<Student> query_where(@Param("student_id")int student_id, @Param("student_name")String student_name);
void update_set(Student student);
Student query_choose(Student student);
List<Student> query_trim(@Param("student_id")int student_id, @Param("student_name")String student_name);
List<Student> query_foreach(List<Integer> list);
List<Student> query_like1(@Param("student_name")String student_name);
List<Student> query_like2(@Param("student_name")String student_name);
List<Student> query_like3(@Param("student_name")String student_name);
}
<mapper namespace="com.xjj.mapper.StudentMapper">
<sql id="baseColumn">
student_id,student_name
sql>
<select id="query_where" resultType="com.xjj.entity.Student">
select
<include refid="baseColumn"/>
from student
<where>
<if test="student_id!=0 and student_id!=''">
and student_id=#{student_id}
if>
<if test="student_name!=null">
and student_name=#{student_name}
if>
where>
select>
<update id="update_set">
update student
<set>
<if test="student_name!='' and student_name!=null">
student_name=#{student_name},
if>
set>
where student_id=#{student_id}
update>
<select id="query_choose" resultType="com.xjj.entity.Student">
select * from student
<where>
<choose>
<when test="student_id!=0 and student_id!=null">
and student_id=#{student_id}
when>
<when test="student_name!=null and student_name!=''">
and student_name=#{student_name}
when>
<otherwise>
and student_id=1
otherwise>
choose>
where>
select>
<select id="query_trim" resultType="com.xjj.entity.Student">
select * from student
<trim prefix="where" suffixOverrides="and">
<if test="student_id!=0 and student_id!=null">
student_id=#{student_id} and
if>
<if test="student_name!=null and student_name!=''">
student_name=#{student_name} and
if>
trim>
select>
<select id="query_foreach" resultType="com.xjj.entity.Student">
select * from student
<where>
student_id in
<foreach collection="list" open="(" close=")" item="item" separator=",">
#{item}
foreach>
where>
select>
<select id="query_like1" resultType="com.xjj.entity.Student">
select * from student
where student_name like #{student_name}
select>
<select id="query_like2" resultType="com.xjj.entity.Student">
select * from student
where student_name like concat('%',#{student_name},'%')
select>
<select id="query_like3" resultType="com.xjj.entity.Student">
<bind name="student_name" value="'%'+student_name+'%'"/>
select * from student
where student_name like #{student_name}
select>
mapper>
package com.xjj;
import com.xjj.entity.Student;
import com.xjj.mapper.StudentMapper;
import com.xjj.util.Util;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class AppTest
{
@Test
public void query_where() {
SqlSession sqlSession= Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
List<Student> stu1=mapper.query_where(0,"上杉越");
System.out.println(stu1);
List<Student> stu2=mapper.query_where(5,null);
System.out.println(stu2);
List<Student> stu3=mapper.query_where(5,"上杉越");
System.out.println(stu3);
sqlSession.close();
}
@Test
public void update_set(){
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
Student stu=new Student();
stu.setStudent_id(1);
stu.setStudent_name("路明非");
mapper.update_set(stu);
System.out.println(mapper.query_where(1,"路明非"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void query_choose(){
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
Student stu1=new Student();
stu1.setStudent_id(1);
System.out.println(mapper.query_choose(stu1));
Student stu2=new Student();
stu2.setStudent_name("上杉越");
System.out.println(mapper.query_choose(stu2));
Student stu3=new Student();
System.out.println(mapper.query_choose(stu3));
sqlSession.close();
}
@Test
public void query_trim(){
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
List<Student> stu1=mapper.query_trim(0,"上杉越");
System.out.println(stu1);
List<Student> stu2=mapper.query_trim(5,null);
System.out.println(stu2);
List<Student> stu3=mapper.query_trim(5,"上杉越");
System.out.println(stu3);
sqlSession.close();
}
@Test
public void query_foreach(){
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(5);
System.out.println(mapper.query_foreach(list));
sqlSession.close();
}
@Test
public void query_like(){
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
System.out.println(mapper.query_like1("%上%"));
System.out.println(mapper.query_like2("上"));
System.out.println(mapper.query_like3("上"));
sqlSession.close();
}
}
<settings>
<setting name="cacheEnabled" value="true"/>
settings>
<cache/>
public class Student implements Serializable {
}
package com.xjj.mapper;
import com.xjj.entity.Student;
import java.util.List;
public interface StudentMapper {
List<Student> query(String student_name);
void insert(Student student);
}
<mapper namespace="com.xjj.mapper.StudentMapper">
<cache/>
<select id="query" resultType="com.xjj.entity.Student">
select * from student
where student_name like concat('%',#{student_name},'%')
select>
<insert id="insert">
insert into student(student_name) values(#{student_name})
insert>
mapper>
package com.xjj;
import com.xjj.entity.Student;
import com.xjj.mapper.StudentMapper;
import com.xjj.util.Util;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class AppTest
{
/*一级缓存是sqlSession级别的,只有在一个会话中才会生效。
如果开启了二级缓存,先去二级缓存中尝试命中
二级缓存未命中时,尝试去一级缓存中命中
一级缓存也未命中时,再去数据库查询*/
@Test
public void cache(){
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
System.out.println("未打开二级缓存时,对一级缓存的检测!(先后查询两次相同结果集)");
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送了sql语句");
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中命中成功,未发送sql语句");
sqlSession.close();
}
@Test
public void cache_invalid1(){
System.out.println("未打开二级缓存时,一级缓存方式失效1(关闭sqlSession会话)");
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送了sql语句");
sqlSession.close();
System.out.println("关闭了sqlSession会话,清空了一级缓存");
sqlSession=Util.getSession();
mapper=sqlSession.getMapper(StudentMapper.class);
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送了sql语句");
sqlSession.close();
}
@Test
public void cache_invalid2(){
System.out.println("未打开二级缓存时,一级缓存方式失效2(两次查询之间加入增删改操作)");
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送sql语句");
Student student=new Student();
student.setStudent_name("昂热");
mapper.insert(student);
System.out.println("出现了增删改操作,导致一级缓存失效");
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送sql语句");
sqlSession.commit();
sqlSession.close();
}
@Test
public void cache_invalid3(){
System.out.println("未打开二级缓存时,一级缓存方式失效3(强制清空缓存)");
SqlSession sqlSession=Util.getSession();
StudentMapper mapper=sqlSession.getMapper(StudentMapper.class);
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送了sql语句");
sqlSession.clearCache();
System.out.println("强制清空了缓存");
System.out.println(mapper.query("山"));
System.out.println("在一级缓存中未命中,发送了sql语句");
sqlSession.close();
}
@Test
public void cache2(){
System.out.println("打开二级缓存");
SqlSession sqlSession1=Util.getSession();
StudentMapper mapper1=sqlSession1.getMapper(StudentMapper.class);
System.out.println(mapper1.query("上"));
System.out.println("在二级和一级缓存中都未命中,发送sql语句,关闭sqlSession对话,相当于清除了一级缓存");
sqlSession1.close();
SqlSession sqlSession2=Util.getSession();
StudentMapper mapper2=sqlSession2.getMapper(StudentMapper.class);
System.out.println(mapper2.query("上"));
System.out.println("在二级缓存中命中成功,不发送sql语句");
sqlSession2.close();
}
}
package com.xjj.entity;
import java.io.Serializable;
public class Address implements Serializable {
/*如果存在外键,就让外键作为一个对象类的属性。*/
private Integer address_id;
private String address_country;
private Person person_id;
public Integer getAddress_id() {
return address_id;
}
public void setAddress_id(Integer address_id) {
this.address_id = address_id;
}
public String getAddress_country() {
return address_country;
}
public void setAddress_country(String address_country) {
this.address_country = address_country;
}
public Person getPerson_id() {
return person_id;
}
public void setPerson_id(Person person_id) {
this.person_id = person_id;
}
}
package com.xjj.entity;
import java.io.Serializable;
public class Person implements Serializable {
private Integer person_id;
private String person_name;
private Integer person_age;
public Integer getPerson_id() {
return person_id;
}
public void setPerson_id(Integer person_id) {
this.person_id = person_id;
}
public String getPerson_name() {
return person_name;
}
public void setPerson_name(String person_name) {
this.person_name = person_name;
}
public Integer getPerson_age() {
return person_age;
}
public void setPerson_age(Integer person_age) {
this.person_age = person_age;
}
@Override
public String toString() {
return "Person{" +
"person_id=" + person_id +
", person_name='" + person_name + '\'' +
", person_age=" + person_age +
'}';
}
}
package com.xjj.entity;
public class PersonAndAddress extends Person{
/*如果想要查询人的时候同时查到详细信息,就调用这个类。
否则只调用个人表就行了。*/
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"person_id=" + getPerson_id() +
", person_name='" + getPerson_name() + '\'' +
", person_age=" + getPerson_age() +
'}'+"PersonAndAddress{" +
"address=" + address +
'}';
}
}
package com.xjj.mapper;
import com.xjj.entity.PersonAndAddress;
import org.apache.ibatis.annotations.Param;
public interface PersonMapper {
PersonAndAddress QueryByPersonId(@Param("person_id")int person_id); /*直接1对1两表之间查询*/
PersonAndAddress QueryByStep(@Param("person_id")int person_id); /*分步查询*/
}
<mapper namespace="com.xjj.mapper.PersonMapper">
<cache/>
<resultMap id="Person" type="com.xjj.entity.PersonAndAddress">
<id property="person_id" column="person_id"/>
<result property="person_name" column="person_name"/>
<result property="person_age" column="person_age"/>
resultMap>
<resultMap id="PersonAndAddress" extends="Person" type="com.xjj.entity.PersonAndAddress">
<association property="address" javaType="com.xjj.entity.Address">
<id property="address_id" column="address_id"/>
<result property="address_country" column="address_country"/>
association>
resultMap>
<select id="QueryByPersonId" resultMap="PersonAndAddress">
select
person.person_id,person.person_name,person.person_age,
address.address_id,address.address_country
from
person,address
where
person.person_id=address.person_id
and
person.person_id=#{person_id}
select>
<resultMap id="Step1" extends="Person" type="com.xjj.entity.PersonAndAddress">
<association property="address" column="person_id" select="com.xjj.mapper.AddressMapper.queryByStep"/>
resultMap>
<select id="QueryByStep" resultMap="Step1">
select
person_id,person_name,person_age
from
person
where
person_id=#{person_id}
select>
mapper>
package com.xjj.mapper;
import com.xjj.entity.Address;
import org.apache.ibatis.annotations.Param;
public interface AddressMapper {
Address queryByStep(@Param("person_id")int person_id);
}
<mapper namespace="com.xjj.mapper.AddressMapper">
<cache/>
<select id="queryByStep" resultType="com.xjj.entity.Address">
select *
from address
where
person_id=#{person_id}
select>
mapper>
package com.xjj.entity;
import java.io.Serializable;
public class Person implements Serializable {
private Integer person_id;
private String person_name;
private Integer person_age;
public Integer getPerson_id() {
return person_id;
}
public void setPerson_id(Integer person_id) {
this.person_id = person_id;
}
public String getPerson_name() {
return person_name;
}
public void setPerson_name(String person_name) {
this.person_name = person_name;
}
public Integer getPerson_age() {
return person_age;
}
public void setPerson_age(Integer person_age) {
this.person_age = person_age;
}
@Override
public String toString() {
return "Person{" +
"person_id=" + person_id +
", person_name='" + person_name + '\'' +
", person_age=" + person_age +
'}';
}
}
package com.xjj.entity;
public class Task {
private Integer task_id;
private String task_content;
private Person person; /*逻辑外键用对象设置*/
public Integer getTask_id() {
return task_id;
}
public void setTask_id(Integer task_id) {
this.task_id = task_id;
}
public String getTask_content() {
return task_content;
}
public void setTask_content(String task_content) {
this.task_content = task_content;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Override
public String toString() {
return "Task{" +
"task_id=" + task_id +
", task_content='" + task_content + '\'' +
", person=" + person ;
}
}
package com.xjj.entity;
import java.util.List;
public class PersonAndTask extends Person{
private List<Task> task; /*对多的关系的时候用List*/
public List<Task> getTask() {
return task;
}
public void setTask(List<Task> task) {
this.task = task;
}
@Override
public String toString() {
return "Person{" +
"person_id=" + getPerson_id() +
", person_name='" + getPerson_name() + '\'' +
", person_age=" + getPerson_age() +
'}'+"PersonAndTask{" +
"task=" + task +
'}';
}
}
package com.xjj.mapper;
import com.xjj.entity.PersonAndTask;
import org.apache.ibatis.annotations.Param;
public interface PersonMapper {
PersonAndTask QueryByPersonId(@Param("person_id")int person_id);
}
<mapper namespace="com.xjj.mapper.PersonMapper">
<resultMap id="Person" type="com.xjj.entity.Person">
<id property="person_id" column="person_id"/>
<result property="person_name" column="person_name"/>
<result property="person_age" column="person_age"/>
resultMap>
<resultMap id="PersonAndTaskAndComment" extends="Person" type="com.xjj.entity.PersonAndTask">
<collection property="task" ofType="com.xjj.entity.Task">
<id property="task_id" column="task_id"/>
<result property="task_content" column="task_content"/>
collection>
resultMap>
<select id="QueryByPersonId" resultMap="PersonAndTaskAndComment">
select
person.person_id,person.person_name,person.person_age,
task.task_id,task.task_content,
comment.comment_id,comment.comment_content
from person,task,comment
where
person.person_id=task.person_id
and
task.task_id=comment.task_id
and
person.person_id=#{person_id}
select>
mapper>
概念:控制反转(inverse of control)什么控制,谁反转了谁
控制:创建对象,彼此关系的权利
控制权是在开发者在程序代码中进行掌控。new
夺取控制权反转给Spring的容器。
在Spring容器中声明要什么,在Spring容器中进行具体的控制。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjjgroupId>
<artifactId>Spring_002artifactId>
<version>1.0-SNAPSHOTversion>
<name>Spring_002name>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.1.5.RELEASEversion>
dependency>
dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-pluginartifactId>
<version>3.1.0version>
plugin>
<plugin>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
plugin>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
plugin>
<plugin>
<artifactId>maven-jar-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-install-pluginartifactId>
<version>2.5.2version>
plugin>
<plugin>
<artifactId>maven-deploy-pluginartifactId>
<version>2.8.2version>
plugin>
<plugin>
<artifactId>maven-site-pluginartifactId>
<version>3.7.1version>
plugin>
<plugin>
<artifactId>maven-project-info-reports-pluginartifactId>
<version>3.0.0version>
plugin>
plugins>
pluginManagement>
build>
project>
package com.xjj;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Person {
private String name;
private String ancestry;
private Friend[] array_friends;
private List<Friend> list_friends;
private Set<Friend> set_friedns;
private Map<String,Friend> map_friends;
public Person(){
}
public Person(String name, String ancestry) {
System.out.println(name+"出生....");
this.name = name;
this.ancestry = ancestry;
}
public String getName() {
return name;
}
public void setName(String name) {
System.out.println(name+"出生....");
this.name = name;
}
public String getAncestry() {
return ancestry;
}
public void setAncestry(String ancestry) {
this.ancestry = ancestry;
}
public Friend[] getArray_friends() {
return array_friends;
}
public void setArray_friends(Friend[] array_friends) {
this.array_friends = array_friends;
}
public List<Friend> getList_friends() {
return list_friends;
}
public void setList_friends(List<Friend> list_friends) {
this.list_friends = list_friends;
}
public Set<Friend> getSet_friedns() {
return set_friedns;
}
public void setSet_friedns(Set<Friend> set_friedns) {
this.set_friedns = set_friedns;
}
public Map<String, Friend> getMap_friends() {
return map_friends;
}
public void setMap_friends(Map<String, Friend> map_friends) {
this.map_friends = map_friends;
}
public void destory(){
if(getName().equals("大地与山之王")){
System.out.println("夏弥死了,师兄很伤心....");
}
else
if(getName().equals("青铜与火之王")){
System.out.println("老唐死了,路明非很伤心....");
}
}
public void init(){
if (getName().equals("路明非")){
System.out.println("路明非的安然出生,是一种大家都不敢相信的奇迹....");
}
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", ancestry='" + ancestry + '\'';
}
}
package com.xjj;
public class Friend {
private String name;
private String skill;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
@Override
public String toString() {
return "Friend{" +
"name='" + name + '\'' +
", skill='" + skill + '\'' +
'}';
}
}
<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">
<bean id="lw" class="com.xjj.Person" abstract="true">
<property name="ancestry" value="龙王"/>
bean>
<bean id="laotang" class="com.xjj.Person" parent="lw" destroy-method="destory">
<property name="name" value="青铜与火之王"/>
bean>
<bean id="xiami" class="com.xjj.Person" parent="lw" destroy-method="destory">
<property name="name" value="大地与山之王"/>
bean>
<bean id="lushanyan" class="com.xjj.Person">
<constructor-arg name="name" value="路山彦"/>
<constructor-arg name="ancestry" value="S"/>
bean>
<bean id="lulincheng" class="com.xjj.Person" depends-on="lushanyan">
<property name="name" value="路麟成"/>
<property name="ancestry" value="S"/>
bean>
<bean id="lumingfei" class="com.xjj.Person" depends-on="lulincheng" lazy-init="true" init-method="init">
<property name="name" value="路明非"/>
<property name="ancestry" value="S"/>
bean>
<bean id="yuanzhinv" class="com.xjj.Person" name="fengjianliuli egui">
<property name="name" value="源稚女"/>
<property name="ancestry" value="皇"/>
bean>
<bean id="heezuoge" class="com.xjj.Person" name="baiwang" scope="prototype">
<property name="name" value="赫尔佐格"/>
<property name="ancestry" value="A"/>
bean>
<bean id="chuzihang" class="com.xjj.Person">
<property name="name" value="楚子航"/>
<property name="ancestry" value="S"/>
<property name="array_friends">
<array>
<bean class="com.xjj.Friend">
<property name="name" value="路明非"/>
<property name="skill" value="燃烧生命"/>
bean>
<bean class="com.xjj.Friend">
<property name="name" value="凯撒"/>
<property name="skill" value="镰鼬"/>
bean>
<bean class="com.xjj.Friend">
<property name="name" value="源稚生"/>
<property name="skill" value="王权"/>
bean>
array>
property>
<property name="list_friends">
<list>
<bean class="com.xjj.Friend">
<property name="name" value="路明非"/>
<property name="skill" value="燃烧生命"/>
bean>
<bean class="com.xjj.Friend">
<property name="name" value="凯撒"/>
<property name="skill" value="镰鼬"/>
bean>
<bean class="com.xjj.Friend">
<property name="name" value="源稚生"/>
<property name="skill" value="王权"/>
bean>
list>
property>
<property name="set_friedns">
<set>
<bean class="com.xjj.Friend">
<property name="name" value="路明非"/>
<property name="skill" value="燃烧生命"/>
bean>
<bean class="com.xjj.Friend">
<property name="name" value="凯撒"/>
<property name="skill" value="镰鼬"/>
bean>
<bean class="com.xjj.Friend">
<property name="name" value="源稚生"/>
<property name="skill" value="王权"/>
bean>
set>
property>
<property name="map_friends">
<map>
<entry key="lumingfei">
<bean class="com.xjj.Friend">
<property name="name" value="路明非"/>
<property name="skill" value="燃烧生命"/>
bean>
entry>
<entry key="kaisa">
<bean class="com.xjj.Friend">
<property name="name" value="凯撒"/>
<property name="skill" value="镰鼬"/>
bean>
entry>
<entry key="yuanzhisheng">
<bean class="com.xjj.Friend">
<property name="name" value="源稚生"/>
<property name="skill" value="王权"/>
bean>
entry>
map>
property>
bean>
<bean id="huiliyi" class="com.xjj.Person" autowire="byName">
<property name="name" value="绘梨衣"/>
<property name="ancestry" value="皇"/>
bean>
beans>
package com.xjj;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.Arrays;
public class AppTest
{
@Test
public void test() {
ApplicationContext ac=new ClassPathXmlApplicationContext(new String[]{"bean1.xml"});
Person laotang=ac.getBean("laotang",Person.class);
Person xiami=ac.getBean("xiami",Person.class);
Person lushanyan=ac.getBean("lushanyan",Person.class);
Person lulincheng=ac.getBean("lulincheng",Person.class);
Person lumingfei=ac.getBean("lumingfei",Person.class);
Person yuanzhinv=ac.getBean("yuanzhinv",Person.class);
Person fengjianliuli=ac.getBean("fengjianliuli",Person.class);
Person egui=ac.getBean("egui",Person.class);
Person hheezuoge=ac.getBean("heezuoge",Person.class);
Person baiwang=ac.getBean("baiwang",Person.class);
Person chuzihang=ac.getBean("chuzihang",Person.class);
System.out.println("老唐是:"+laotang);
System.out.println("夏弥是:"+xiami);
System.out.println(lushanyan);
System.out.println(lulincheng);
System.out.println(lumingfei);
System.out.print("源稚女就是风间琉璃:");
System.out.println(yuanzhinv==fengjianliuli);
System.out.print("风间琉璃就是恶鬼:");
System.out.println(fengjianliuli==egui);
System.out.print("恶鬼就是源稚女:");
System.out.println(egui==yuanzhinv);
System.out.print("赫尔佐格就是白王:");
System.out.println(hheezuoge==baiwang);
System.out.println(chuzihang);
System.out.println("楚子航的朋友:"+ Arrays.toString(chuzihang.getArray_friends()));
System.out.println("楚子航的朋友:"+ chuzihang.getList_friends());
System.out.println("楚子航的朋友:"+ chuzihang.getSet_friedns());
System.out.println("楚子航的朋友:"+ chuzihang.getMap_friends());
((ClassPathXmlApplicationContext)ac).close();
}
}
package com.xjj;
public class Person {
private String name;
private String ancestry;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAncestry() {
return ancestry;
}
public void setAncestry(String ancestry) {
this.ancestry = ancestry;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", ancestry='" + ancestry + '\'' +
'}';
}
}
package com.xjj;
public class Mysql {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Mysql{" +
"driverClassName='" + driverClassName + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///ssh
jdbc.username=root
jdbc.password=123
<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">
<bean id="yuanzhisheng" class="com.xjj.Person">
<property name="name" value="源稚生"/>
<property name="ancestry" value="皇"/>
bean>
beans>
<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">
<bean id="yuanzhinv" class="com.xjj.Person">
<property name="name" value="源稚女"/>
<property name="ancestry" value="皇"/>
bean>
beans>
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
<context:property-placeholder location="classpath:jdbc.properties"/>
<import resource="spring-bean1.xml"/>
<import resource="spring-bean2.xml"/>
<bean id="mysql" class="com.xjj.Mysql">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
bean>
beans>
package com.xjj;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class Hunt {
public void before(JoinPoint joinPoint){
System.out.println("出门去准备猎杀:"+joinPoint.getSignature().getName());
}
public void afterreturnning(String returnning){
System.out.println("猎杀成功,获得:"+returnning);
}
public void after(){
System.out.println("成功交付任务物品....");
}
public Object around(ProceedingJoinPoint proceedingJoinPoint){
try {
System.out.println("检查自己的状态....");
Object object=proceedingJoinPoint.proceed();
return object;
} catch (Throwable throwable) {
throwable.printStackTrace();
return null;
}
}
}
package com.xjj;
public class Monster {
public String monster(String name,Integer age){
System.out.println(age+"岁的"+name+"开始猎杀雷龙....");
return "雷龙翼";
}
}
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
<aop:aspectj-autoproxy/>
<bean id="hunt" class="com.xjj.Hunt">
bean>
<bean id="monster" class="com.xjj.Monster">
bean>
<aop:config>
<aop:aspect ref="hunt">
<aop:before method="before" pointcut="execution(* com.xjj.Monster.monster(..))"/>
<aop:after method="after" pointcut="execution(* com.xjj.Monster.monster(..))"/>
<aop:after-returning method="afterreturnning" pointcut="execution(* com.xjj.Monster.monster(..))" returning="returnning"/>
<aop:around method="around" pointcut="execution(* com.xjj.Monster.monster(..))"/>
aop:aspect>
aop:config>
beans>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjjgroupId>
<artifactId>Spring_002artifactId>
<version>1.0-SNAPSHOTversion>
<name>Spring_002name>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.1.5.RELEASEversion>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjrtartifactId>
<version>1.9.2version>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjweaverartifactId>
<version>1.9.2version>
dependency>
dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-pluginartifactId>
<version>3.1.0version>
plugin>
<plugin>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
plugin>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
plugin>
<plugin>
<artifactId>maven-jar-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-install-pluginartifactId>
<version>2.5.2version>
plugin>
<plugin>
<artifactId>maven-deploy-pluginartifactId>
<version>2.8.2version>
plugin>
<plugin>
<artifactId>maven-site-pluginartifactId>
<version>3.7.1version>
plugin>
<plugin>
<artifactId>maven-project-info-reports-pluginartifactId>
<version>3.0.0version>
plugin>
plugins>
pluginManagement>
build>
project>
package com.xjj;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Aspect /*标记其为一个切面*/
@Component /*标记这个类为Spring的一个组件,相当于在xml中注册了一个bean一样*/
public class Hunt {
@Before("execution(* com.xjj.Monster.monster(..))")
public void before(JoinPoint joinPoint){
System.out.println("出门去准备猎杀:"+joinPoint.getSignature().getName());
}
@AfterReturning(value = "execution(* com.xjj.Monster.monster(..))",returning = "returnning")
public void afterreturnning(String returnning){
System.out.println("猎杀成功,获得:"+returnning);
}
@After("execution(* com.xjj.Monster.monster(..))")
public void after(JoinPoint joinPoint){
System.out.println("成功交付任务物品:"+joinPoint.getSignature().getName());
}
@Around("execution(* com.xjj.Monster.monster(..))")
public Object around(ProceedingJoinPoint proceedingJoinPoint){
try {
System.out.println("检查自己的状态....");
Object object=proceedingJoinPoint.proceed();
return object;
} catch (Throwable throwable) {
throwable.printStackTrace();
return null;
}
}
}
package com.xjj;
import org.springframework.stereotype.Component;
@Component
public class Monster {
public String monster(String name,Integer age){
System.out.println(age+"岁的"+name+"开始猎杀雷龙....");
return "雷龙翼";
}
}
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.xjj"/>
beans>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjjgroupId>
<artifactId>Spring_002artifactId>
<version>1.0-SNAPSHOTversion>
<name>Spring_002name>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.1.5.RELEASEversion>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjrtartifactId>
<version>1.9.2version>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjweaverartifactId>
<version>1.9.2version>
dependency>
dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-pluginartifactId>
<version>3.1.0version>
plugin>
<plugin>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
plugin>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
plugin>
<plugin>
<artifactId>maven-jar-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-install-pluginartifactId>
<version>2.5.2version>
plugin>
<plugin>
<artifactId>maven-deploy-pluginartifactId>
<version>2.8.2version>
plugin>
<plugin>
<artifactId>maven-site-pluginartifactId>
<version>3.7.1version>
plugin>
<plugin>
<artifactId>maven-project-info-reports-pluginartifactId>
<version>3.0.0version>
plugin>
plugins>
pluginManagement>
build>
project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjjgroupId>
<artifactId>SpringMvc_001artifactId>
<version>1.0-SNAPSHOTversion>
<packaging>warpackaging>
<name>SpringMvc_001 Maven Webappname>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.0.8.RELEASEversion>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>4.0.0-b01version>
<scope>providedscope>
dependency>
dependencies>
<build>
<finalName>SpringMvc_001finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-pluginartifactId>
<version>3.1.0version>
plugin>
<plugin>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
plugin>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
plugin>
<plugin>
<artifactId>maven-war-pluginartifactId>
<version>3.2.2version>
plugin>
<plugin>
<artifactId>maven-install-pluginartifactId>
<version>2.5.2version>
plugin>
<plugin>
<artifactId>maven-deploy-pluginartifactId>
<version>2.8.2version>
plugin>
plugins>
pluginManagement>
build>
project>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID"
version="3.1">
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:springmvc.xmlparam-value>
init-param>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<filter>
<filter-name>encodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
<init-param>
<param-name>forceEncodingparam-name>
<param-value>trueparam-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<filter>
<filter-name>hiddenHttpMethodFilterfilter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
web-app>
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
bean>
<bean class="com.xjj.controller.Controller" name="/controller">
bean>
<context:component-scan base-package="com.xjj.controller"/>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
beans>
package com.xjj.controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Controller implements org.springframework.web.servlet.mvc.Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mav=new ModelAndView();
System.out.println("传统方式....");
mav.addObject("girl","上杉绘梨衣"); /*添加一个值*/
mav.setViewName("person"); /*设置返回的页面名字,设置逻辑视图中的logicViewName*/
return mav;
}
}
package com.xjj.controller;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.WebRequest;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
@Controller
@RequestMapping("/controller")
public class Controller2 {
@RequestMapping("/forwardtojsp") /*默认方法,通过url请求进来,然后直接forward跳转到jsp页面出去*/
public String function1(Model model){
model.addAttribute("girl","夏弥");
System.out.println("forwardjsp....");
return "person"; /*直接写要跳转页面的logicViewName,在springmvc的配置文件中会组装成物理路径*/
}
@RequestMapping("/redirecttojsp") /*重定向到别的jsp页面,通过url请求进来,然后redirect跳转到jsp页面出去*/
public String function2(Model model){
model.addAttribute("girl","零"); /*由于是重定向,所以不会把值传过去,所以不显示零的名字*/
System.out.println("redirectjsp....");
return "redirect:/jsp/person.jsp"; /*由于重定向必须要添加redirect,但是这样子就不被springmvc的前置和后置所限制了,所以自己要写全路径*/
}
@RequestMapping("/forwardtourl") /*转发到别的url,相当于再次对控制器发起请求,forward的方式*/
public String function3(Model model){
model.addAttribute("girl","酒德麻衣"); /*转发过去的时候会被下一个页面所覆盖,所以不会出现酒德麻衣的名字*/
System.out.println("forword控制器....");
return "forward:/controller"; /*写一个forward,然后后面跟上请求的url地址就行了*/
}
@RequestMapping(value={"/value1","/value2","/value3"},method={RequestMethod.GET,RequestMethod.POST},params = {"name=酒德麻衣"})
/*为了检验webrequest和websession,从表单提交过来可以使用webrequest获取,然后使用httpsession重定向传出去。
value为这个url指定了多个的请求路径,不只是某一个url可以进来。
method是指定只能通过什么方法来进入,比如说get还是posy方法。
而param是指定必须要有这个变量传进来,不然会报错,并且可以指定值等于某一个东西或者不等于某个东西。*/
public String function4(Model model, WebRequest webRequest,HttpSession httpSession){
System.out.println(webRequest.getParameter("name"));
httpSession.setAttribute("girl",webRequest.getParameter("name"));
return "redirect:/jsp/person.jsp";
}
@RequestMapping(value={"/value1?","/value2*","/value3/**"})
public String function5(Model model){
model.addAttribute("girl","苏恩曦");
/*
?代表一个不包括/的非空任意字符。
*代表无数个不包括/的可以为空任意字符。如果是‘/*’,那么代表可以往下弄一层,即限定死格式为/无数多个任意字符但是不包括/。
**代表无数个无数级的可以为空任意字符可以任意包含/,但是一定要在**之前加上一个/。
如果两个@RequestMapping的value值是一样的,那么就靠param来区别。根据param来选择使用哪一个。
*/
return "person";
}
@RequestMapping("/pathvariable/{name}/{ancestry}") /*可以是/pathvariable/name/ancetry来传值会自动被@PathVariable收走*/
public String function6(@PathVariable("name")String name,@PathVariable("ancestry")String ancestry,Model model){
System.out.println(name+"的血统为:"+ancestry);
model.addAttribute("girl",name);
return "person";
}
/*如果当表单上传时带有时间,那一定要加上这个方法,可以转化时间格式,否则在function7方法中取不出来,只能使用一种时间格式,但是可以自己选择使用哪种*/
@InitBinder
public void sdf1(WebDataBinder dataBinder){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setLenient(false);
dataBinder.registerCustomEditor(Date.class,new CustomDateEditor(sdf,false));
}
@PutMapping("/put")
@ResponseBody /*可以不返回页面,改成返回值*/
public String function7(String name, @RequestParam("ancestry")String ancestry,Date date,@ModelAttribute Person person){
/*form表单提交数据
1、使用形参的名称法由表单传入值,即表单属性和形参属性名字一样
2、使用@RequestParam注释,其中的属性名字和表单中属性名字要一致
3、使用pojo直接注入属性来获得前台传值。只要表单中的属性和pojo类的属性一样就会自动注入进去*/
System.out.println(person.getName()+"的血统为:"+person.getAncestry()+person.getDate());
System.out.println(name+"的血统为:"+ancestry+date);
return name;
}
@ModelAttribute
/*这个方法中会保存对象,而这个方法会在每次调用controller请求的时候自行调用,即这些对象从到头为一直存在
在下面的方法中检验了这些保存的对象是否存在,结果都为true,并且可以通过该注解将该对象注入到形参中,如果表单中有数据传递过来,那么会被表单中的数据所顶替*/
public void function8(Model model){
Person person=new Person();
person.setName("楚子航");
person.setAncestry("S");
model.addAttribute("person",person);
}
@RequestMapping("/modelattribute")
public String function8_1(@ModelAttribute Person person){
System.out.println(person.getName()+"的血统为:"+person.getAncestry());
return "person";
}
}
package com.xjj.controller;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet(urlPatterns = {},loadOnStartup = 2)
public class WebPathServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException{
/*在整体应用上下文之中存储一个引用上下文路径的变量classpath,并且会自动生成以为是init方法,这个就相当于本项目的webapp,直接问往下推就可以了*/
config.getServletContext().setAttribute("classpath",config.getServletContext().getContextPath());
super.init(config);
}
}
package com.xjj.controller;
import java.util.Date;
public class Person {
private String name;
private String ancestry;
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAncestry() {
return ancestry;
}
public void setAncestry(String ancestry) {
this.ancestry = ancestry;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
<%--
Created by IntelliJ IDEA.
User: 徐敬杰
Date: 2019/7/18
Time: 10:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
post请求
put请求
<%--
Created by IntelliJ IDEA.
User: 徐敬杰
Date: 2019/7/18
Time: 9:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="${classpath}/static/css/person.css">
<title>Title</title>
</head>
<body>
<div>这个女孩子是:${girl}</div>
</body>
</html>
div{
background-color: green;
}
文件结构
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.xjjgroupId>
<artifactId>SSMDemo_001artifactId>
<version>1.0-SNAPSHOTversion>
<packaging>warpackaging>
<name>SSMDemo_001 Maven Webappname>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<spring.version>5.0.8.RELEASEspring.version>
<jackson.version>2.9.3jackson.version>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-context-supportartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-beansartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-aopartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-aspectsartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-txartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-annotationsartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>net.sf.json-libgroupId>
<artifactId>json-libartifactId>
<version>2.4version>
<classifier>jdk15classifier>
dependency>
<dependency>
<groupId>org.codehaus.jacksongroupId>
<artifactId>jackson-core-aslartifactId>
<version>1.9.2version>
dependency>
<dependency>
<groupId>org.codehaus.jacksongroupId>
<artifactId>jackson-mapper-aslartifactId>
<version>1.9.2version>
dependency>
<dependency>
<groupId>commons-fileuploadgroupId>
<artifactId>commons-fileuploadartifactId>
<version>1.3.1version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.6version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.2.7version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
<version>1.7.12version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
<version>1.7.12version>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>com.mchangegroupId>
<artifactId>c3p0artifactId>
<version>0.9.2.1version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>1.3.0version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
<scope>providedscope>
dependency>
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>javax.servlet.jsp-apiartifactId>
<version>2.3.1version>
<scope>providedscope>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>joda-timegroupId>
<artifactId>joda-timeartifactId>
<version>2.9.9version>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelperartifactId>
<version>5.1.2version>
dependency>
<dependency>
<groupId>commons-codecgroupId>
<artifactId>commons-codecartifactId>
<version>1.10version>
dependency>
dependencies>
<build>
<finalName>SSMDemo_001finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-pluginartifactId>
<version>3.1.0version>
plugin>
<plugin>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
<plugin>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
plugin>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
plugin>
<plugin>
<artifactId>maven-war-pluginartifactId>
<version>3.2.2version>
plugin>
<plugin>
<artifactId>maven-install-pluginartifactId>
<version>2.5.2version>
plugin>
<plugin>
<artifactId>maven-deploy-pluginartifactId>
<version>2.8.2version>
plugin>
plugins>
pluginManagement>
build>
project>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID"
version="3.1">
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/bean.xmlparam-value>
context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/spring-servlet.xmlparam-value>
init-param>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<filter>
<filter-name>encodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
<init-param>
<param-name>forceRequestEncodingparam-name>
<param-value>trueparam-value>
init-param>
<init-param>
<param-name>forceResponseEncodingparam-name>
<param-value>trueparam-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<filter>
<filter-name>hiddenHttpMethodFilterfilter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
web-app>
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<import resource="classpath:spring/spring-*.xml"/>
beans>
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.xjj">
<context:exclude-filter type="annotation" expression="com.xjj.service"/>
<context:exclude-filter type="annotation" expression="com.xjj.mapper"/>
context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
bean>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="54000000"/>
<property name="defaultEncoding" value="UTF-8"/>
bean>
beans>
<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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.xjj.mapper"/>
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/xjj/mapper/*.xml">property>
<property name="configuration">
<bean class="org.apache.ibatis.session.Configuration">
bean>
property>
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
value>
property>
bean>
array>
property>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xjj.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">property>
bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
bean>
beans>
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123
#定义LOG输出级别
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c]-%m%n
#mybatis显示SQL语句日志配置
log4j.logger.com.xjj.mapper=DEBUG
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录,这里会放在tomcat之下
log4j.appender.File.File = D:/log.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
package com.xjj.controller;
import com.xjj.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonService personService;
@RequestMapping("/m1")
public String m1(){
System.out.println("成功!");
personService.querybyname();
System.out.println("成功了!");
return "person";
}
}
package com.xjj.service;
public interface PersonService {
int querybyname();
}
package com.xjj.service.impl;
import com.xjj.mapper.PersonMapper;
import com.xjj.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonMapper personMapper;
public int querybyname(){
System.out.println("到达了service层....");
System.out.println(personMapper.querybyname("鲤鱼王").getPerson_age());
return 1;
}
}
package com.xjj.mapper;
import com.xjj.entity.Person;
public interface PersonMapper {
Person querybyname(String person_name);
}
<mapper namespace="com.xjj.mapper.PersonMapper">
<select id="querybyname" resultType="com.xjj.entity.Person">
select person_age from person where person_name=#{person_name}
select>
mapper>
在log4j中配置路径否则不会出现日志记录
serviceimpl层要实现service否则无法自动注入给controller层
注意resources下面的包级结构,是否是分层的
再保存文件路径时直接保存名字就可以了,在前台输出的时候输出格式为
/SSM_0000003_war_exploded/upload/Aurora-10802019年07月27日08时26分35秒.jpg
所以可以构造表达式为
<img src="${classpath}/upload/${userLoginSession.userHeadPortrait}">
使用json时注意@RequestBody和@ResponseBody
引入js文件一定要写全,空文件夹不编译时可以手动加入文件
修改了layui的css不发生变化,需要修改浏览器设置F12->Network->disable cache勾选->刷新页面
不要重启服务器,直接关闭重新开启