snjl

我大概率会编程。


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Mybatis简单测试

发表于 2018-11-14 | 分类于 Mybatis , SSM框架
字数统计: 2.1k 字 | 阅读时长 ≈ 12 分钟

0.准备工具

因为配置文件都是读取相同的,所以可以进行工厂类封装。

阅读全文 »

Mybatis多对多

发表于 2018-11-14 | 分类于 Mybatis , SSM框架
字数统计: 1.2k 字 | 阅读时长 ≈ 7 分钟

0.前期准备

数据库:

阅读全文 »

Mybatis一对多

发表于 2018-11-14 | 分类于 Mybatis , SSM框架
字数统计: 801 字 | 阅读时长 ≈ 4 分钟

0.前期准备

数据库配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE tb_clazz
(
id INT AUTO_INCREMENT
PRIMARY KEY,
CODE VARCHAR(18) NULL,
name VARCHAR(18) NULL,
CONSTRAINT TB_CLAZZ_id_uindex
UNIQUE (id)
)
CREATE TABLE tb_student
(
id INT AUTO_INCREMENT
PRIMARY KEY,
NAME VARCHAR(18) NULL,
sex CHAR(3) NULL,
age INT NULL,
clazz_id INT NULL,
CONSTRAINT TB_STUDENT_id_uindex
UNIQUE (id),
CONSTRAINT TB_STUDENT_tb_clazz_id_fk
FOREIGN KEY (clazz_id) REFERENCES tb_clazz (id)
)

CREATE INDEX TB_STUDENT_tb_clazz_id_fk
ON tb_student (clazz_id);

阅读全文 »

Mybatis一对一

发表于 2018-11-14 | 分类于 Mybatis , SSM框架
字数统计: 555 字 | 阅读时长 ≈ 3 分钟

0.前期准备

数据库配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE tb_card
(
id INT AUTO_INCREMENT
PRIMARY KEY,
code VARCHAR(18) NULL,
CONSTRAINT tb_card_id_uindex
UNIQUE (id)
)

CREATE TABLE tb_person
(
id INT AUTO_INCREMENT
PRIMARY KEY,
name VARCHAR(18) NULL,
sex VARCHAR(18) NULL,
age INT NULL,
card_id INT NULL,
CONSTRAINT tb_person_id_uindex
UNIQUE (id),
CONSTRAINT tb_person_card_id_uindex
UNIQUE (card_id),
CONSTRAINT tb_person_tb_card_id_fk
FOREIGN KEY (card_id) REFERENCES tb_card (id)
)
ENGINE = Inno

身份证和人是一对一的关系,在tb_person表中,card_id为外键,对应tb_card主键,且card_id唯一,就满足了一对一的关系。

2.POJO类

两个pojo类:

1
2
3
4
5
public class Card implements Serializable{

private Integer id;
private String code;
//getter,setter

1
2
3
4
5
6
7
8
public class Person implements Serializable{

private Integer id;
private String name;
private String sex;
private Integer age;
private Card card;
//getter,setter

3.mapper和mybatis-config.xml配置

mapper配置:

1
2
3
4
5
6
7
8
//CardMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.fkit.mapper.CardMapper">
<select id="selectCardById" parameterType="int" resultType="org.fkit.domain.Card">
SELECT * FROM tb_card WHERE id = #{id}
</select>
</mapper>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//PersonMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.fkit.mapper.PersonMapper">
<select id="selectPersonById" parameterType="int" resultMap="personMapper">
select * from tb_person where id = #{id}
</select>
<resultMap id="personMapper" type="org.fkit.domain.Person">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="age" column="age"/>
<association property="card" column="card_id"
select="org.fkit.mapper.CardMapper.selectCardById"
javaType="org.fkit.domain.Card"/>
</resultMap>
</mapper>

在此可以给PersonMapper设置一个接口:

1
2
3
4
5
6
7
8
9
10
11
12
//PersonMapper.java
package org.fkit.mapper;

import org.fkit.domain.Person;

public interface PersonMapper {
/**
* @param id
* @return Person
*/
Person selectPersonById(Integer id);
}

在mybatis-config.xml中配置这2个mapper:

1
2
<mapper resource="org/fkit/mapper/PersonMapper.xml"/>
<mapper resource="org/fkit/mapper/CardMapper.xml"/>

4.测试

测试代码:

1
2
3
4
5
6
7
8
9
10
//OneToOneTset.java
public class OneToOneTest {
public static void main(String args[])throws Exception {
SqlSession sqlSession = FKSqlSessionFactory.getSqlSession();
Person person = sqlSession.selectOne("org.fkit.mapper.PersonMapper.selectPersonById", 1);
System.out.println(person);
}
}
//output:
Person{id=1, name='jack', sex='男', age=23, card=Card{id=1, code='432801198009191038'}}

因为设置了接口,也可以如此测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//OneToOneTset.java

public class OneToOneTest {
public static void main(String args[])throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
Person person = personMapper.selectPersonById(1);
System.out.println(person);
}
}

//output:
Person{id=1, name='jack', sex='男', age=23, card=Card{id=1, code='432801198009191038'}}

注册登录测试

发表于 2018-11-14 | 分类于 Mybatis , SSM框架
字数统计: 578 字 | 阅读时长 ≈ 3 分钟

java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package org.fkit.controller;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.domain2.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
private static List<User> userList;

public UserController() {
super();
userList = new ArrayList<User>();
}

private static Log logger = LogFactory.getLog(UserController.class);

@RequestMapping(value = "/register", method = RequestMethod.GET)
public String requireForm() {
logger.info("register GET被调用");
System.out.println("register GET被调用");

return "registerForm";
}

@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(
@RequestParam("loginname") String loginname,
@RequestParam("password") String password,
@RequestParam("username") String username) {
logger.info("register POST被调用");
System.out.println("register POST被调用");
User user = new User();
user.setLoginname(loginname);
user.setUsername(username);
user.setPassword(password);

userList.add(user);
System.out.println(userList);
return "loginForm";
}

@RequestMapping("/login")
public String login(
@RequestParam("loginname") String loginname,
@RequestParam("password") String password,
Model model){
logger.info("登录名" + loginname + " 密码" + password);
for (User user : userList) {
if (user.getLoginname().equals(loginname) &&
user.getPassword().equals(password)) {
model.addAttribute("user", user);
return "welcome";
}
}
return "loginForm";
}
}

springmvc-config2.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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">
<!--<bean name="/hello" class="org.fkit.controller.HelloController"/>-->
<context:component-scan base-package="org.fkit.controller"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/content/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>


</beans>

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">

<servlet>
<servlet-name>springmvc2</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/springmvc-config2.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc2</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
</web-app>

PathVariable,RequestHeader,CookieValue注解测试

发表于 2018-11-14 | 分类于 Mybatis , SSM框架
字数统计: 265 字 | 阅读时长 ≈ 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package org.fkit.controller;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class DataBindingController {
private static final Log logger = LogFactory.getLog(DataBindingController.class);

@RequestMapping(value = "/pathVariableTest/{userId}")
public void pathVariableTest(@PathVariable Integer userId) {
logger.info("通过@PathVariable获得的数据:" + userId);
}

@RequestMapping(value = "/requestHeaderTest")
public void requestHeaderTest(
@RequestHeader("User-Agent") String userAgent,
@RequestHeader(value = "Accept") String[] accepts) {
logger.info("通过@requestHeaderTest获得的数据:" + userAgent);
for (String accept : accepts) {
logger.info(accept);
}
}

@RequestMapping(value = "/cookieValueTest")
public void cookieValueTest(
@CookieValue(value = "JSESSIONID", defaultValue = "") String sessionId) {
logger.info("通过@CookieValue获得的数据:" + sessionId);

}

@RequestMapping(value = "/testWebsite")
public String testWebsite(){
return "index";
}
}

jsp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%--
Created by IntelliJ IDEA.
User: 34924
Date: 2018/8/1
Time: 22:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>test</title>
</head>
<body>
<a href="/pathVariableTest/1">测试注解1</a>
<br>
<a href="/requestHeaderTest">注解2</a>
<br>
<a href="/cookieValueTest">注解3</a>
</body>
</html>

log4.properties配置

发表于 2018-11-14 | 分类于 日志配置
字数统计: 187 字 | 阅读时长 ≈ 1 分钟

放在WEB-INF的目录下:

阅读全文 »

react的router路由跳转获取url参数方法

发表于 2018-11-14 | 分类于 react , 前端
字数统计: 223 字 | 阅读时长 ≈ 1 分钟

例如一个页面分为三块,导航栏,左栏右栏,左栏为页面跳转,右栏为显示list页面或者detail页面,如下所示:

image

阅读全文 »

Mybatis注解写法

发表于 2018-11-13 | 分类于 Mybatis , SSM框架
字数统计: 650 字 | 阅读时长 ≈ 3 分钟

1.普通增删改查

使用表:User

阅读全文 »

mabatis逆向工程

发表于 2018-11-13 | 分类于 java , SSM框架
字数统计: 305 字 | 阅读时长 ≈ 1 分钟

本文使用idea编译器,安装Mybatisplus插件后可以使用逆向工程。

阅读全文 »
1…192021
snjl

snjl

越过山丘,才发现无人等候。

203 日志
44 分类
107 标签
RSS
GitHub E-Mail Weibo
© 2019 snjl
总访问量次 | 总访客人 |
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4