购物网站如何建设余姚网络公司哪家好
- 作者: 五速梦信息网
- 时间: 2026年04月20日 11:10
当前位置: 首页 > news >正文
购物网站如何建设,余姚网络公司哪家好,哪里有零基础网站建设教学,智能建站做网站好吗前面我们介绍了Mybatis动态SQL的使用#xff1b;本篇我们介绍使用mybatis- freemarker动态语言生成动态SQL。
如果您对Mybatis动态SQL不太了解#xff0c;建议您先进行了解后再阅读本篇#xff0c;可以参考#xff1a;
Mybatis 动态SQL – 使用if,where标签动态生成条件语…前面我们介绍了Mybatis动态SQL的使用本篇我们介绍使用mybatis- freemarker动态语言生成动态SQL。
如果您对Mybatis动态SQL不太了解建议您先进行了解后再阅读本篇可以参考
Mybatis 动态SQL – 使用if,where标签动态生成条件语句
Mybatis 动态SQL – 使用if,set标签动态生成更新语句
Mybatis 动态SQL – 使用choose标签动态生成条件语句
Mybatis 动态SQL – 使用choose标签动态生成更新语句
Mybatis 动态SQL – 使用trim标签替代where,set标签
Mybatis 动态SQL - 使用foreach标签查询数据、批量新增、批量修改、删除数据
一、数据准备
这里我们直接使用脚本初始化数据库中的数据
– 如果数据库不存在则创建数据库
CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARSET utf8;
– 切换数据库
USE demo;
– 创建用户表
CREATE TABLE IF NOT EXISTS T_TEACHER(ID INT PRIMARY KEY COMMENT 教师编号,TEACHER_NAME VARCHAR(64) NOT NULL COMMENT 教师名称,DEPARTMENT VARCHAR(16) NOT NULL COMMENT 所属部门,BIRTH DATE NOT NULL COMMENT 出生年月,DEGREE VARCHAR(16) NOT NULL COMMENT 学历(ZK:专科, BK:本科, YJS:研究生, BS:博士)
);
– 插入用户数据
INSERT INTO T_TEACHER(ID, TEACHER_NAME, DEPARTMENT, BIRTH, DEGREE)
VALUES(1, 张三1, 001, 1990-06-12, BK),(2, 李四1, 002, 1992-05-10, BK),(3, 张三2, 003, 1988-01-15, YJS),(4, 李四2, 001, 1979-03-10, BK),(5, 李四3, 003, 1995-08-16, YJS);创建了一个名称为demo的数据库并在库里创建了名称为T_TEACHER的教师表并向表中插入了数据
二、环境准备
1、添加依赖
dependencygroupIdorg.mybatis.scripting/groupIdartifactIdmybatis-freemarker/artifactIdversion1.2.4/version
/dependency2、创建实体类
在cn.horse.demo下创建TeacherInfo、TeacherInfoQuery实体类
TeacherInfo类
package cn.horse.demo;import java.time.LocalDate;public class TeacherInfo {private Integer id;private String name;private String department;private LocalDate birth;private String degree;public void setId(Integer id) {this.id id;}public Integer getId() {return id;}public void setName(String name) {this.name name;}public String getName() {return name;}public void setDepartment(String department) {this.department department;}public String getDepartment() {return department;}public void setBirth(LocalDate birth) {this.birth birth;}public LocalDate getBirth() {return birth;}public void setDegree(String degree) {this.degree degree;}public String getDegree() {return degree;}Overridepublic String toString() {StringBuilder stringBuilder new StringBuilder();stringBuilder.append({ );stringBuilder.append(id: );stringBuilder.append(this.id);stringBuilder.append(, );stringBuilder.append(name: );stringBuilder.append(this.name);stringBuilder.append(, );stringBuilder.append(department: );stringBuilder.append(this.department);stringBuilder.append(, );stringBuilder.append(birth: );stringBuilder.append(this.birth);stringBuilder.append(, );stringBuilder.append(degree: );stringBuilder.append(this.degree);stringBuilder.append( });return stringBuilder.toString();}
}TeacherInfoQuery类
package cn.horse.demo;public class TeacherInfoQuery {private String department;private String degree;public void setDepartment(String department) {this.department department;}public String getDepartment() {return department;}public void setDegree(String degree) {this.degree degree;}public String getDegree() {return degree;}
}3、Mapper配置文件
在resources的目录下新建TeacherInfoMapper.xml配置文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecn.horse.demo.TeacherInfoMapper/mapper4、动态语言配置
在resources下新建mybatis-config.xml配置文件配置freemarker默认的脚本语言并引入TeacherInfoMapper.xml配置文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configurationsettingssetting namelogImpl valueJDK_LOGGING/setting namedefaultScriptingLanguage valueorg.mybatis.scripting.freemarker.FreeMarkerLanguageDriver//settingsenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver valueorg.gjt.mm.mysql.Driver/property nameurl valuejdbc:mysql://localhost:3306/demo?useUnicodetrueamp;useSSLfalseamp;characterEncodingutf8/property nameusername valueroot/property namepassword valuehorse//dataSource/environment/environmentsmappersmapper resourcedemo/TeacherInfoMapper.xml //mappers
/configuration其中setting namedefaultScriptingLanguage valueorg.mybatis.scripting.freemarker.FreeMarkerLanguageDriver/用于配置freemarker作为默认的动态语言
5、日志配置
在resources的目录下新建logging.properties配置文件
handlersjava.util.logging.ConsoleHandler
.levelINFOcn.horse.demo.TeacherInfoMapper.levelFINER
java.util.logging.ConsoleHandler.levelALL
java.util.logging.ConsoleHandler.formatterjava.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format%1\(tY-%1\)tm-%1\(td %1\)tT.%1\(tL %4\)s %3\(s - %5\)s%6$s%n在cn.horse.demo下新建JdkLogConfig类
JdkLogConfig类
package cn.horse.demo;import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;public class JdkLogConfig {public JdkLogConfig() {try {InputStream inputStream ClassLoader.getSystemClassLoader().getResourceAsStream(logging.properties);LogManager.getLogManager().readConfiguration(inputStream);} catch (IOException e) {throw new RuntimeException(e);}}
}6、会话工具类
在cn.horse.demo包下新建SqlSessionUtils工具类
package cn.horse.demo;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;
import java.util.Objects;public class SqlSessionUtils {private static final SqlSessionFactory sqlSessionFactory;static {// 读取mybatis配置文件InputStream inputStream ClassLoader.getSystemClassLoader().getResourceAsStream(mybatis-config.xml);// 根据配置创建SqlSession工厂sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);}/*** 开启会话* return/public static SqlSession openSession() {return sqlSessionFactory.openSession();}/** 关闭会话* param sqlSession*/public static void closeSession(SqlSession sqlSession) {if(Objects.nonNull(sqlSession)) {sqlSession.close();}}
}7、启动程序配置
package cn.horse.demo;import org.apache.ibatis.session.SqlSession;import java.util.List;public class Main {public static void main(String[] args) {// 引入JDK日志配置System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);}private static void find(String statement, TeacherInfoQuery query) {SqlSession sqlSession null;try {sqlSession SqlSessionUtils.openSession();ListTeacherInfo teacherInfoList sqlSession.selectList(statement, query);for (TeacherInfo teacherInfo: teacherInfoList) {System.out.println(teacherInfo);}} finally {SqlSessionUtils.closeSession(sqlSession);}}private static void insert(String statement, ListTeacherInfo teacherInfoList) {SqlSession sqlSession null;try {sqlSession SqlSessionUtils.openSession();sqlSession.insert(statement, teacherInfoList);sqlSession.commit();} finally {SqlSessionUtils.closeSession(sqlSession);}}private static void update(String statement, TeacherInfo teacherInfo) {SqlSession sqlSession null;try {sqlSession SqlSessionUtils.openSession();sqlSession.update(statement, teacherInfo);sqlSession.commit();} finally {SqlSessionUtils.closeSession(sqlSession);}}private static void delete(String statement, ListInteger idList) {SqlSession sqlSession null;try {sqlSession SqlSessionUtils.openSession();sqlSession.delete(statement, idList);sqlSession.commit();} finally {SqlSessionUtils.closeSession(sqlSession);}}
}三、查询数据
在TeacherInfoMapper.xml配置文件中新增findByQuery查询语句
select idfind resultTypecn.horse.demo.TeacherInfoSELECTID,TEACHER_NAME name,DEPARTMENT,BIRTH,DEGREEFROM T_TEACHERWHERE 1 1![CDATA[#if degree?? ! degreeAND DEGREE p namedegree//#if#if department?? ! departmentAND DEPARTMENT p namedepartment//#if]]
/select#if类似于if标签第一个标签代表的是degree不为null并且不为空字符串第二个标签代表的是department不为null并且不为空字符串
测试
// 引入JDK日志配置
System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);// 查询学历为本科的教师
TeacherInfoQuery query new TeacherInfoQuery();
query.setDegree(BK);
find(cn.horse.demo.TeacherInfoMapper.find, query);执行后的结果如下 四、批量插入数据
在TeacherInfoMapper.xml配置文件中新增insert插入语句
insert idinsertINSERT INTO T_TEACHER(ID, TEACHER_NAME, DEPARTMENT, BIRTH, DEGREE)VALUES![CDATA[#list list as teacherInfo(p valueteacherInfo.id/,p valueteacherInfo.name/,p valueteacherInfo.department/,p valueteacherInfo.birth/,p valueteacherInfo.degree/)#if teacherInfo_has_next,/#if/#list]]
/insert测试
// 引入JDK日志配置
System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);ListTeacherInfo teacherInfoList new ArrayList();
TeacherInfo teacherInfo1 new TeacherInfo();
teacherInfo1.setId(11);
teacherInfo1.setName(张三11);
teacherInfo1.setDepartment(001);
teacherInfo1.setBirth(LocalDate.of(1988, 5, 20));
teacherInfo1.setDegree(BK);
teacherInfoList.add(teacherInfo1);TeacherInfo teacherInfo2 new TeacherInfo();
teacherInfo2.setId(12);
teacherInfo2.setName(李四12);
teacherInfo2.setDepartment(003);
teacherInfo2.setBirth(LocalDate.of(1989, 8, 10));
teacherInfo2.setDegree(ZK);
teacherInfoList.add(teacherInfo2);
insert(cn.horse.demo.TeacherInfoMapper.insert, teacherInfoList);执行的结果如下 五、更新数据
在TeacherInfoMapper.xml配置文件中新增update更新语句
update idupdateUPDATE T_TEACHERSET![CDATA[ID p nameid/#if name?? ! name, TEACHER_NAME p namename//#if#if department?? ! department, DEPARTMENT p namedepartment//#if#if birth??, BIRTH p namebirth//#if#if degree?? ! degree, DEGREE p namedegree//#if]]WHERE ID ![CDATA[ p nameid/ ]]
/update测试
// 引入JDK日志配置
System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);TeacherInfo teacherInfo new TeacherInfo();
teacherInfo.setId(11);
teacherInfo.setName(张三22);
update(cn.horse.demo.TeacherInfoMapper.update, teacherInfo);执行的结果如下 六、批量删除数据
在TeacherInfoMapper.xml配置文件中新增delete删除语句
delete iddeleteDELETE FROM T_TEACHERWHERE ID IN (![CDATA[#list list as idp valueid/#if id_has_next,/#if/#list]])
/delete测试
// 引入JDK日志配置
System.setProperty(java.util.logging.config.class, cn.horse.demo.JdkLogConfig);delete(cn.horse.demo.TeacherInfoMapper.delete, Arrays.asList(11, 12));执行的结果如下
- 上一篇: 购物网站排名第一的有哪些代做网站微信号
- 下一篇: 购物网站设计理念app download
相关文章
-
购物网站排名第一的有哪些代做网站微信号
购物网站排名第一的有哪些代做网站微信号
- 技术栈
- 2026年04月20日
-
购物网站排名第一wordpress 页面标签
购物网站排名第一wordpress 页面标签
- 技术栈
- 2026年04月20日
-
购物网站哪个好重庆网络推广外包
购物网站哪个好重庆网络推广外包
- 技术栈
- 2026年04月20日
-
购物网站设计理念app download
购物网站设计理念app download
- 技术栈
- 2026年04月20日
-
购物网站设计理念做网站和做app哪个容易
购物网站设计理念做网站和做app哪个容易
- 技术栈
- 2026年04月20日
-
购物网站网页设计模板江西建设信息网站
购物网站网页设计模板江西建设信息网站
- 技术栈
- 2026年04月20日
