一、创建maven工程

把依赖的包写在pom.xml中。保存后,工程会有错,需要在工程上右键选择“Maven-->Update Project”

pom.xml内容为

<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.0</modelVersion>
<groupId>org.mybatis</groupId>
<artifactId>example</artifactId>
<version>0.0.1-SNAPSHOT</version> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency> <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

pom.xml

二、简单的例子

①创建数据库mybatis,创建表sys_user,sys_role,sys_user_role,并插入数据

DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户Id',
`user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
`user_password` varchar(50) DEFAULT NULL COMMENT '密码',
`user_email` varchar(50) DEFAULT NULL COMMENT '邮箱',
`user_info` text COMMENT '简介',
`head_img` blob COMMENT '头像',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; INSERT INTO `sys_user` VALUES ('', 'admin', '', 'admin@mybatis.tk', '管理员', null, '2018-11-30 17:00:00');
INSERT INTO `sys_user` VALUES ('', 'test', '', 'test@mybatis.org', 'test info', 0x7B, '2018-12-05 13:45:45'); -- ----- CREATE TABLE `sys_role` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色Id',
`role_name` varchar(50) DEFAULT NULL COMMENT '用户名',
`enabled` int(11) DEFAULT NULL COMMENT '有效标识',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表'; INSERT INTO `sys_role` VALUES ('', '管理员', '', '', '2018-11-30 17:05:00');
INSERT INTO `sys_role` VALUES ('', '普通用户', '', '', '2018-11-30 17:05:01'); -- ------ CREATE TABLE `sys_user_role` (
`user_id` bigint(20) DEFAULT NULL COMMENT '用户Id',
`role_id` bigint(20) DEFAULT NULL COMMENT '角色Id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色关联表'; INSERT INTO `sys_user_role` VALUES ('', '');
INSERT INTO `sys_user_role` VALUES ('', '');
INSERT INTO `sys_user_role` VALUES ('', '');

db.sql

②创建mybatis配置文件mybatis-config.xml,位置src/main/resources下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="org.mybatis.example.model"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <package name="org.mybatis.example.mapper"/> -->
<mapper resource="org/mybatis/example/mapper/UserMapper.xml"/>
<mapper resource="org/mybatis/example/mapper/RoleMapper.xml"/>
</mappers>
</configuration>

mybatis-config.xml

③创建model,SysUser,SysRole和SysUserRole,位置src/main/java下,包org.mybatis.example.model

package org.mybatis.example.model;

import java.util.Date;

public class SysUser {

    private Long id;
private String userName;
private String userPassword;
private String userEmail;
private String userInfo;
private byte[] headImg;
private Date createTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
public String getUserInfo() {
return userInfo;
}
public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
}
public byte[] getHeadImg() {
return headImg;
}
public void setHeadImg(byte[] headImg) {
this.headImg = headImg;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
} }

SysUser.java

package org.mybatis.example.model;

import java.util.Date;

public class SysRole {

    private Long id;
private String roleName;
private int enabled;
private Long createBy;
private Date createTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public int getEnabled() {
return enabled;
}
public void setEnabled(int enabled) {
this.enabled = enabled;
}
public Long getCreateBy() {
return createBy;
}
public void setCreateBy(Long createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
} }

SysRole.java

package org.mybatis.example.model;

public class SysUserRole {

    private Long userId;
private Long roleId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
} }

SysUserRole.java

④创建映射的xml文件,UserMapper.xml,位置src/main/resources/org/mybatis/example/mapper下

<?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.mybatis.example.mapper.UserMapper"> <select id="selectUserById" resultMap="selectUserMap">
select * from sys_user where id = #{id}
</select> <resultMap type="org.mybatis.example.model.SysUser" id="selectUserMap">
<id property="id" column="id" />
<result property="userName" column="user_name"/>
<result property="userPassword" column="user_password"/>
<result property="userEmail" column="user_email"/>
<result property="userInfo" column="user_info"/>
<result property="headImg" column="head_img" jdbcType="BLOB"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
</resultMap> </mapper>

UserMapper.xml

⑤创建Mapper的接口,UserMapper.java,位置src/main/java下,包org.mybatis.example.mapper

package org.mybatis.example.mapper;

import org.mybatis.example.model.SysUser;

public interface UserMapper {

    SysUser selectUserById(Long id);

}

UserMapper.java

⑥创建测试程序,TestSelectMapper.java,位置src/main/java下,包org.mybatis.example.app

package org.mybatis.example.app;

import java.io.IOException;
import java.io.Reader;
import java.util.List; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mybatis.example.mapper.RoleMapper;
import org.mybatis.example.mapper.UserMapper;
import org.mybatis.example.model.SysRole;
import org.mybatis.example.model.SysUser; import junit.framework.Assert; public class TestSelectMapper { private static SqlSessionFactory sqlSessionFactory; @BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} @Test
public void testSelectUserById() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = userMapper.selectUserById(1L);
Assert.assertNotNull(sysUser);
Assert.assertEquals("admin", sysUser.getUserName());
System.out.println(sysUser.toString());
} finally {
sqlSession.close();
}
}
}

TestSelectMapper.java

三、综合增删改查

<?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.mybatis.example.mapper.UserMapper"> <select id="selectUserById" resultMap="selectUserMap">
select * from sys_user where id = #{id}
</select> <resultMap type="org.mybatis.example.model.SysUser" id="selectUserMap">
<id property="id" column="id" />
<result property="userName" column="user_name"/>
<result property="userPassword" column="user_password"/>
<result property="userEmail" column="user_email"/>
<result property="userInfo" column="user_info"/>
<result property="headImg" column="head_img" jdbcType="BLOB"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
</resultMap> <select id="selectAllUsers" resultType="org.mybatis.example.model.SysUser">
select user_name userName, user_password userPassword,
user_email userEmail, user_info userInfo,
user_info userInfo, head_img headImg,
create_time createTime from sys_user
</select> <insert id="insertAUser">
insert into sys_user (id, user_name, user_password, user_email, user_info, head_img, create_time) values
(#{id}, #{userName}, #{userPassword}, #{userEmail}, #{userInfo}, #{headImg, jdbcType=BLOB},
#{createTime, jdbcType=TIMESTAMP})
</insert> <insert id="insertAUserWithoutId" useGeneratedKeys="true" keyProperty="id">
insert into sys_user (user_name, user_password, user_email, user_info, head_img, create_time) values
(#{userName}, #{userPassword}, #{userEmail}, #{userInfo}, #{headImg, jdbcType=BLOB}, #{createTime, jdbcType=TIMESTAMP})
</insert> <update id="updateAUser">
update sys_user set
user_name = #{userName},
user_email = #{userEmail},
user_info = #{userInfo},
create_time = #{createTime, jdbcType=TIMESTAMP}
where id = #{id}
</update> <delete id="deleteAUser">
delete from sys_user where id = #{id}
</delete> </mapper>

UserMapper.xml

package org.mybatis.example.mapper;

import java.util.List;

import org.mybatis.example.model.SysUser;

public interface UserMapper {

    SysUser selectUserById(Long id);
List<SysUser> selectAllUsers(); int insertAUser(SysUser sysUser);
int insertAUserWithoutId(SysUser sysUser); int updateAUser(SysUser sysUser);
int deleteAUser(Long id);
}

UserMapper.java

<?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.mybatis.example.mapper.RoleMapper">
<select id="selectRolesByUserId" resultType="org.mybatis.example.model.SysRole">
select r.id,
r.role_name roleName,
r.enabled,
r.create_by createBy,
r.create_time createTime
from sys_user u
inner join sys_user_role ur on u.id = ur.user_id
inner join sys_role r on r.id = ur.role_id
where u.id = #{userId}
</select> <select id="selectRolesByUserIdAndRoleEnabled" resultType="org.mybatis.example.model.SysRole">
select r.id,
r.role_name roleName,
r.enabled,
r.create_by createBy,
r.create_time createTime
from sys_user u
inner join sys_user_role ur on u.id = ur.user_id
inner join sys_role r on r.id = ur.role_id
where u.id = #{userId} and r.enabled = #{enabled}
</select>
</mapper>

RoleMapper.xml

package org.mybatis.example.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.mybatis.example.model.SysRole; public interface RoleMapper { List<SysRole> selectRolesByUserId(Long id);
List<SysRole> selectRolesByUserIdAndRoleEnabled(
@Param("userId") Long userId,
@Param("enabled") int enabled);
}

RoleMapper.java

package org.mybatis.example.app;

import java.io.IOException;
import java.io.Reader;
import java.util.List; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mybatis.example.mapper.RoleMapper;
import org.mybatis.example.mapper.UserMapper;
import org.mybatis.example.model.SysRole;
import org.mybatis.example.model.SysUser; import junit.framework.Assert; public class TestSelectMapper { private static SqlSessionFactory sqlSessionFactory; @BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} @Test
public void testSelectUserById() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = userMapper.selectUserById(1L);
Assert.assertNotNull(sysUser);
Assert.assertEquals("admin", sysUser.getUserName());
System.out.println(sysUser.toString());
} finally {
sqlSession.close();
}
} @Test
public void testSelectAllUsers() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<SysUser> sysUserList = userMapper.selectAllUsers();
Assert.assertNotNull(sysUserList);
Assert.assertTrue(sysUserList.size() > 0);
System.out.println(sysUserList.size());
} finally {
sqlSession.close();
}
} @Test
public void testSelectRolesByUserId() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
RoleMapper rolerMapper = sqlSession.getMapper(RoleMapper.class);
List<SysRole> sysRoleList = rolerMapper.selectRolesByUserId(1L);
Assert.assertNotNull(sysRoleList);
Assert.assertTrue(sysRoleList.size() > 0);
System.out.println(sysRoleList.size());
} finally {
sqlSession.close();
}
} }

TestSelectMapper.java

package org.mybatis.example.app;

import java.io.IOException;
import java.io.Reader;
import java.util.Date; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mybatis.example.mapper.UserMapper;
import org.mybatis.example.model.SysUser; public class TestInsertMapper { private static SqlSessionFactory sqlSessionFactory; @BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} @Test
public void testInsertAUser() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = new SysUser();
sysUser.setId(2L);
sysUser.setUserName("test");
sysUser.setUserPassword("123456");
sysUser.setUserEmail("test@mybatis.org");
sysUser.setUserInfo("test info");
sysUser.setHeadImg(new byte[] {123});
sysUser.setCreateTime(new Date());
int insertResult = userMapper.insertAUser(sysUser);
System.out.println(insertResult);
} finally {
//sqlSession.rollback();
sqlSession.commit();
sqlSession.close();
}
} @Test
public void testInsertAUserWithoutId() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = new SysUser();
sysUser.setUserName("test3");
sysUser.setUserPassword("123456");
sysUser.setUserEmail("test3@mybatis.org");
sysUser.setUserInfo("test3 info");
sysUser.setCreateTime(new Date());
int insertResult = userMapper.insertAUser(sysUser);
System.out.println(insertResult);
} finally {
//sqlSession.rollback();
sqlSession.commit();
sqlSession.close();
}
} @Test
public void testUpdateAUser() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser selectUser = userMapper.selectUserById(1003L);
selectUser.setUserName("test1003");
selectUser.setUserEmail("test1003@mybatis.org");
selectUser.setUserInfo("test1003 info");
selectUser.setCreateTime(new Date());
int updateResult = userMapper.updateAUser(selectUser);
System.out.println(updateResult);
} finally {
sqlSession.commit();
sqlSession.close();
}
} @Test
public void testDeleteAUser() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int deleteResult = userMapper.deleteAUser(1003L);
System.out.println(deleteResult);
} finally {
sqlSession.commit();
sqlSession.close();
}
}
}

TestInsertMapper.java

package org.mybatis.example.app;

import java.io.IOException;
import java.io.Reader;
import java.util.List; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mybatis.example.mapper.RoleMapper;
import org.mybatis.example.model.SysRole; public class TestParamMapper { private static SqlSessionFactory sqlSessionFactory; @BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} @Test
public void testComplicatedSelect() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
List<SysRole> sysRoleList = roleMapper.selectRolesByUserIdAndRoleEnabled(1L, 1);
System.out.println(sysRoleList.size());
} finally {
sqlSession.close();
}
}
}

TestParamMapper.java

当需要传递多个参数的时候,需要用到@Param注解,并且上面的代码中给出了例子:RoleMapper.xml中的SelectRolesByUserIdAndRoleEnabled

需要注意的是,在Mapper.xml中,<mapper>中的属性namespace不能少,之前在学习的过程由于缺少了namespace,导致没有得到正确的结果,排查了半天,才找到原因

四、架构图

Maven+Mybatis一些简单例子的更多相关文章

  1. Java连接数据库 #07# MyBatis Generator简单例子

    MyBatis Generator是一个可以帮助我们免去手写实体类&接口类以及XML的代码自动生成工具. 下面,通过一个简单的例子介绍MyBatis Generator如何使用. 大体流程如下 ...

  2. mybatis的简单使用

    使用mybatis数据库时,需要添加一下jar包: asm-3.3.1.jarcglib-2.2.2.jarjavassist-3.17.1-GA.jarlog4j-1.2.17.jarmybatis ...

  3. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)

    在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...

  4. 使用 CXF 做 webservice 简单例子(转载)

    使用 CXF 做 webservice 简单例子     Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这 ...

  5. quartz---的一个简单例子

    quartz---的一个简单例子 首先建立一个maven项目.jar工程即可.(提示:我前面有如何建立一个maven工程的总结以及maven环境的配置.) 1.建立好后点击到app中运行,--> ...

  6. IDEA Maven Mybatis generator 自动生成代码

    IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...

  7. Drools简单例子

    转自:http://www.blogjava.net/diggbag/articles/359347.html 1.Drools简单例子 首先是搭建一个可供进行Drools开发的框架.Jboss官方推 ...

  8. SparkStreaming简单例子(oldAPI)

    SparkStreaming简单例子 ◆ 构建第一个Streaming程序: (wordCount) ◆ Spark Streaming 程序最好以使用Maven或者sbt编译出来的独立应用的形式运行 ...

  9. Mybatis的简单增删改查

    刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...

随机推荐

  1. Latex 模版生成会议论文 不显示Keywords,而是显示 Index Terms- ,改成Keywords 方法

    一. 不管显示何种内容,TEX 文件都是 \begin{IEEEKeywords} 关键词1.关键词2,..... \end{IEEEKeywords} 其中:模版文件 IEEETran.cls存在下 ...

  2. AndroidStudio项目制作倒计时模块

    前言 大家好,给大家带来AndroidStudio项目制作倒计时模块的概述,希望你们喜欢 项目难度 AndroidStudio项目制作倒计时模块的难度,不是很大,就是主要用了Timer和TimerTa ...

  3. MANIFEST.MF文件详解

    1. 依赖包是否在classpath中: 2. 资源文件目录是否在classpath中: 3. 主类是否正确: 具体配置参考 maven-jar-plugin 配置 <plugin> &l ...

  4. LeetCode:145_Binary Tree Postorder Traversal | 二叉树后序遍历 | Hard

    题目:Binary Tree Postorder Traversal 二叉树的后序遍历,题目要求是采用非递归的方式,这个在上数据结构的课时已经很清楚了,二叉树的非递归遍历不管采用何种方式,都需要用到栈 ...

  5. Java线程池(ThreadPoolExecutor)原理分析与使用

    在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...

  6. Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)

    开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...

  7. jsp和servlet的关系

    JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是“类servlet”. Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完 ...

  8. 3-2 模板语法(vue中的内容写法)

    插值表达式.v-text.v-html的用法

  9. Python获取网页指定内容(BeautifulSoup工具的使用方法)

    Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...

  10. 使用 JRebel 进行远程热部署

    JRebel支持热部署,和远程热部署,本文我们来搭建一下远程热部署. 一.服务器安装 JRebel 1.官网下载最新的 JRebel 安装包,下载链接:https://zeroturnaround.c ...