怎么修改网站标题关键词描述,南宁百度seo推广,wordpress卡片式,下载模板后怎么建设网站文章目录 1.基本介绍1.为什么需要MyBatis#xff1f;2.MyBatis介绍3.MyBatis工作示意图4.MyBatis的优势 2.快速入门文件目录1.需求分析2.数据库表设计3.父子模块环境配置1.创建maven父项目2.删除父项目的src目录3.pom.xml文件文件解释 4.创建子模块1.新建一个Module2.创建一个… 文章目录 1.基本介绍1.为什么需要MyBatis2.MyBatis介绍3.MyBatis工作示意图4.MyBatis的优势 2.快速入门文件目录1.需求分析2.数据库表设计3.父子模块环境配置1.创建maven父项目2.删除父项目的src目录3.pom.xml文件文件解释 4.创建子模块1.新建一个Module2.创建一个子模块3.子模块与父模块的pom.xml文件解析 4.MyBatis配置1.pox.xml导入依赖2.mybatis-config.xml配置mybatis配置文件名字任意放在resources下3.Monster.java映射表结构的bean4.Mapper的配置1.MonsterMapper.java操作Monster表的接口2.MonsterMapper.xml与MonsterMapper相对应的xml 5.修改mybatis-config.xml配置要管理的Mapper.xml文件6.MyBatisUtils.java工具类获取SqlSession7.测试1.src下创建test目录并创建一个java文件夹2.MonsterMapperTest.java测试初始化3.报错找不到文件 8.找不到文件解决方式1.在父模块的pom.xml文件中配置build项目时要拷贝的文件类型2.clean一下maven项目然后rebuild不一定好使3.切换maven路径4.再clean一下maven项目然后rebuild5.执行测试代码 3.MyBatis的CRUD1.添加1.代码实例2.报错ssl问题 2.返回自增长的id适用于update和insert1.修改MonsterMapper.xml2.修改测试代码3.结果展示 3.删除1.MonsterMapper.java添加方法2.MonsterMapper.xml配置删除方法3.测试代码 4.修改1.MonsterMapper.java添加方法2.MonsterMapper.xml配置修改方法3.测试代码 5.配置类型别名mybatis-config.xml6.查询单条记录1.MonsterMapper.java添加方法2.MonsterMapper.xml配置查询方法3.测试代码 7.查询多条记录1.MonsterMapper.java添加方法2.MonsterMapper.xml配置查询方法3.测试代码 4.日志输出配置1.需求分析2.解决方案日志输出1.mybatis-config.xml最前面配置日志2.结果展示 3.本阶段完整配置文件1.MonsterMapper.xml2.mybatis-config.xml3.父模块pom.xml 1.基本介绍
1.为什么需要MyBatis 2.MyBatis介绍 3.MyBatis工作示意图 4.MyBatis的优势 2.快速入门
文件目录 1.需求分析 2.数据库表设计
CREATE DATABASE mybatis
use mybatisCREATE TABLE monster(id INT NOT NULL auto_increment,age INT NOT NULL,birthday DATE DEFAULT NULL,email VARCHAR(255) NOT NULL, gender TINYINT NOT NULL,name VARCHAR(255) NOT NULL,salary DOUBLE NOT NULL,PRIMARY KEY (id)
)3.父子模块环境配置
1.创建maven父项目 2.删除父项目的src目录 3.pom.xml文件
文件解释 4.创建子模块
1.新建一个Module 2.创建一个子模块
parent应该是上面的mybatis父模块Archetype设置成最基础的配置 3.子模块与父模块的pom.xml文件解析 4.MyBatis配置
1.pox.xml导入依赖
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdmybatis/artifactIdversion1.0-SNAPSHOT/versionnameArchetype - mybatis/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.49/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.7/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version!--如果设置scope为test,则只能在test包下使用--scopetest/scope/dependency/dependencies
/project2.mybatis-config.xml配置mybatis配置文件名字任意放在resources下
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd
configurationenvironments defaultdevelopmentenvironment iddevelopment!--配置事务管理器--transactionManager typeJDBC/!--配置数据源--dataSource typePOOLED!--配置驱动--property namedriver valuecom.mysql.jdbc.Driver/!--配置连接url--!--1.jdbc:mysql协议2.127.0.0.1:3306指定连接mysql的ip端口3.mybatis连接的db4.useSSL使用安全连接5.amp;表示6.useUnicodetrue使用unicode,防止编码错误7.characterEncodingUTF-8字符集使用utf-8--property nameurl valuejdbc:mysql://127.0.0.1:3306/mybatis?useSSLfalseamp;useUnicodetrueamp;characterEncodingUTF-8/!--用户名--property nameusername valueroot/!--密码--property namepassword valueroot//dataSource/environment/environments!--mappers--!-- mapper resourceorg/mybatis/example/BlogMapper.xml/--!--/mappers--
/configuration
3.Monster.java映射表结构的bean
属性名与表的列名保持一致需要有无参构造器反射使用
package com.sun.entity;import java.util.Date;/*** author 孙显圣* version 1.0*/
public class Monster {private Integer id;private Integer age;private Date birthday;private String email;private Integer gender;private String name;private Double salary;//无参构造器public Monster() {}public Monster(Integer id, Integer age, Date birthday, String email, Integer gender, String name, Double salary) {this.id id;this.age age;this.birthday birthday;this.email email;this.gender gender;this.name name;this.salary salary;}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday birthday;}public String getEmail() {return email;}public void setEmail(String email) {this.email email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender gender;}public String getName() {return name;}public void setName(String name) {this.name name;}public Double getSalary() {return salary;}public void setSalary(Double salary) {this.salary salary;}Overridepublic String toString() {return Monster{ id id , age age , birthday birthday , email email \ , gender gender , name name \ , salary salary };}
}
4.Mapper的配置
1.MonsterMapper.java操作Monster表的接口
package com.sun.mapper;import com.sun.entity.Monster;/*** 这个接口用于声明操作monster表的方法** author 孙显圣* version 1.0*/
public interface MonsterMapper {public void addMonster(Monster monster);
}
2.MonsterMapper.xml与MonsterMapper相对应的xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd
!--指定该xml文件和哪个接口对应--
mapper namespacecom.sun.mapper.MonsterMapper!--addMonster是接口的方法名parameterType是接口的参数类型--insert idaddMonster parameterTypecom.sun.entity.Monster!--#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary}是从传入的Monster对象中获取的--INSERT INTO monster(id,age,birthday,email,gender,name,salary)VALUES(NULL, #{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})/insert
/mapper5.修改mybatis-config.xml配置要管理的Mapper.xml文件 !--配置需要管理的Mapper.xml文件--mappersmapper resourcecom/sun/mapper/MonsterMapper.xml//mappers6.MyBatisUtils.java工具类获取SqlSession
package com.util;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 java.io.IOException;
import java.io.InputStream;/*** author 孙显圣* version 1.0*/
public class MyBatisUtils {private static SqlSessionFactory sqlSessionFactory;//使用静态代码块初始化SqlSessionFactorystatic {try {//获取Mybatis配置文件的输入流String resource mybatis-config.xml;//默认是从类路径下获取资源在maven中指的就是resources文件夹下会映射到实际的工作目录InputStream resourceAsStream Resources.getResourceAsStream(resource);//读取资源获取SessionFactory可以理解为连接池sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);} catch (IOException e) {throw new RuntimeException(e);}}//编写方法返回SqlSessionpublic static SqlSession getSqlSession() {return sqlSessionFactory.openSession();}
}
注意这里的Resources不要选错了 7.测试
1.src下创建test目录并创建一个java文件夹 2.MonsterMapperTest.java测试初始化
import com.sun.mapper.MonsterMapper;
import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;/*** author 孙显圣* version 1.0*/
public class MonsterMapperTest {//两个属性private SqlSession sqlSession;private MonsterMapper monsterMapper;//编写方法完成初始化Before //标注了Before之后表示了在执行目标测试方法前会执行该方法public void init() {//获取到sqlSessionsqlSession MyBatisUtils.getSqlSession();//获取到MonsterMapper对象monsterMapper sqlSession.getMapper(MonsterMapper.class);System.out.println(monsterMapper.getClass());}Testpublic void t1() {System.out.println(t1);}}
3.报错找不到文件 8.找不到文件解决方式
1.在父模块的pom.xml文件中配置build项目时要拷贝的文件类型 !--在父模块中的pom.xml文件中配置在build的时候要扫描的文件解决某些类型文件拷贝到target目录失败的问题--buildresourcesresourcedirectorysrc/main/java/directoryincludes!--在java文件夹下的多级目录下的xml文件--include**/*.xml/include/includes/resourceresourcedirectorysrc/main/resources/directoryincludes!--在resources文件夹下的多级目录下的xml文件和properties文件--include**/*.xml/includeinclude**/*.properties/include/includes/resource/resources/build2.clean一下maven项目然后rebuild不一定好使 3.切换maven路径 4.再clean一下maven项目然后rebuild
成功 5.执行测试代码
可以看出返回的是一个针对接口的代理对象所以底层是使用的代理对象来调用接口的方法 3.MyBatis的CRUD
1.添加
1.代码实例
import com.sun.entity.Monster;
import com.sun.mapper.MonsterMapper;
import com.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;import java.util.Date;/*** author 孙显圣* version 1.0*/
public class MonsterMapperTest {//两个属性private SqlSession sqlSession; //相当于连接private MonsterMapper monsterMapper;//编写方法完成初始化Before //标注了Before之后表示了在执行目标测试方法前会执行该方法public void init() {//获取到sqlSessionsqlSession MyBatisUtils.getSqlSession();//获取到MonsterMapper对象monsterMapper sqlSession.getMapper(MonsterMapper.class);System.out.println(monsterMapper.getClass());}//添加信息Testpublic void add() {for (int i 0; i 2; i ) {Monster monster new Monster(null, 10 i, new Date(), sunqq.com, 0, 孙显圣, 10.0 i);//代理对象执行接口的方法monsterMapper.addMonster(monster);}//如果是增删改还要提交一下事务if (sqlSession ! null) {sqlSession.commit();//将连接放回连接池sqlSession.close();}System.out.println(成功);}}
2.报错ssl问题 将mybatis-config.xml中的useSSL改成false 2.返回自增长的id适用于update和insert
1.修改MonsterMapper.xml 2.修改测试代码 3.结果展示 3.删除
1.MonsterMapper.java添加方法 public void delMonster(Integer id);2.MonsterMapper.xml配置删除方法 !--parameterType如果是java的数据类型可以直接简写--delete iddelMonster parameterTypeInteger!--这里可以直接使用形参名来取出形参--DELETE FROM monster where id #{id}/delete3.测试代码 //删除指定id的信息Testpublic void delMonster() {monsterMapper.delMonster(1);//如果是增删改还要提交一下事务if (sqlSession ! null) {sqlSession.commit();//将连接放回连接池sqlSession.close();}System.out.println(删除成功);}4.修改
1.MonsterMapper.java添加方法 public void updateMonster(Monster monster);2.MonsterMapper.xml配置修改方法 update idupdateMonster parameterTypecom.sun.entity.Monster useGeneratedKeystrue keyPropertyidUPDATE monster SETage #{age}, birthday #{birthday},email #{email}, name #{name}, salary #{salary}WHERE id #{id}/update3.测试代码 //修改信息Testpublic void updateMonster() {Monster monster new Monster(null, 10, new Date(), sunqq.com, 0, 孙显圣, 10.0);monsterMapper.updateMonster(monster);//如果是增删改还要提交一下事务if (sqlSession ! null) {sqlSession.commit();//将连接放回连接池sqlSession.close();}System.out.println(修改成功);}5.配置类型别名mybatis-config.xml !--配置类型别名--typeAliases!--这样配置完了就可以直接使用Monster来表示Monster类型的全类名了--typeAlias typecom.sun.entity.Monster aliasMonster//typeAliases6.查询单条记录
1.MonsterMapper.java添加方法 public Monster getMonsterById(Integer id);2.MonsterMapper.xml配置查询方法 select idgetMonsterById resultTypeMonsterSELECT * FROM monster WHERE id #{id}/select3.测试代码 //查询单条记录Testpublic void getMonsterById() {Monster monsterById monsterMapper.getMonsterById(3);System.out.println(monsterById);}7.查询多条记录
1.MonsterMapper.java添加方法 public ListMonster findAllMonster();2.MonsterMapper.xml配置查询方法 !--注意即使这里返回的是一个集合返回类型要是集合中包含的类型不需要是集合类型--select idfindAllMonster resultTypeMonsterSELECT * FROM monster/select3.测试代码 //查询多条记录Testpublic void findAllMonster() {ListMonster allMonster monsterMapper.findAllMonster();for (Monster monster : allMonster) {System.out.println(monster);}}4.日志输出配置
1.需求分析 2.解决方案日志输出
1.mybatis-config.xml最前面配置日志 !--配置mybatis自带的日志settings需要放到最前面--settingssetting namelogImpl valueSTDOUT_LOGGING//settings2.结果展示 3.本阶段完整配置文件
1.MonsterMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd
!--指定该xml文件和哪个接口对应--
mapper namespacecom.sun.mapper.MonsterMapper!--addMonster是接口的方法名parameterType是接口的参数类型--insert idaddMonster parameterTypecom.sun.entity.Monster useGeneratedKeystrue keyPropertyid!--#{age}, #{birthday}, #{email} , #{gender}, #{name}, #{salary}是从传入的Monster对象中获取的--INSERT INTO monster(id,age,birthday,email,gender,name,salary)VALUES(NULL, #{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})/insert!--parameterType如果是java的数据类型可以直接简写--delete iddelMonster parameterTypeInteger!--这里可以直接使用形参名来取出形参--DELETE FROM monster where id #{id}/deleteupdate idupdateMonster parameterTypeMonster useGeneratedKeystrue keyPropertyidUPDATE monster SETage #{age}, birthday #{birthday},email #{email}, name #{name}, salary #{salary}WHERE id #{id}/updateselect idgetMonsterById resultTypeMonsterSELECT * FROM monster WHERE id #{id}/select!--注意即使这里返回的是一个集合返回类型要是集合中包含的类型不需要是集合类型--select idfindAllMonster resultTypeMonsterSELECT * FROM monster/select
/mapper2.mybatis-config.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd
configuration!--配置mybatis自带的日志settings需要放到最前面--settingssetting namelogImpl valueSTDOUT_LOGGING//settings!--配置类型别名--typeAliases!--这样配置完了就可以直接使用Monster来表示Monster类型的全类名了--typeAlias typecom.sun.entity.Monster aliasMonster//typeAliasesenvironments defaultdevelopmentenvironment iddevelopment!--配置事务管理器--transactionManager typeJDBC/!--配置数据源--dataSource typePOOLED!--配置驱动--property namedriver valuecom.mysql.jdbc.Driver/!--配置连接url--!--1.jdbc:mysql协议2.127.0.0.1:3306指定连接mysql的ip端口3.mybatis连接的db4.useSSL使用安全连接5.amp;表示6.useUnicodetrue使用unicode,防止编码错误7.characterEncodingUTF-8字符集使用utf-8--property nameurl valuejdbc:mysql://127.0.0.1:3306/mybatis?useSSLfalseamp;useUnicodetrueamp;characterEncodingUTF-8/!--用户名--property nameusername valueroot/!--密码--property namepassword valueroot//dataSource/environment/environments!--配置需要管理的Mapper.xml文件--mappersmapper resourcecom/sun/mapper/MonsterMapper.xml//mappers
/configuration
3.父模块pom.xml
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdmybatis/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingnameArchetype - mybatis/nameurlhttp://maven.apache.org/urlmodulesmodulemybatis_quickstart/module/modulesdependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.49/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.7/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version!--如果设置scope为test,则只能在test包下使用--scopetest/scope/dependency/dependencies!--在父模块中的pom.xml文件中配置在build的时候要扫描的文件解决某些类型文件拷贝到target目录失败的问题--buildresourcesresourcedirectorysrc/main/java/directoryincludes!--在java文件夹下的多级目录下的xml文件--include**/*.xml/include/includes/resourceresourcedirectorysrc/main/resources/directoryincludes!--在resources文件夹下的多级目录下的xml文件和properties文件--include**/*.xml/includeinclude**/*.properties/include/includes/resource/resources/build
/project