String 注意事项
异常状态
1、DI注入
Address 类型 引用时注意 引用的包名 不是 import com.sun.xml.internal.ws.wsdl.writer.document.http.Address;
而是 java.util 包中的
复杂注入
<?xml version="1.0" encoding="UTF-8"?>
<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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="address" class="com.xjx.pojo.Address">
<property name="address" value="萍乡"></property>
</bean>
<bean id="student" class="com.xjx.pojo.Student">
<!-- 第一种,普通值注入,value-->
<property name="name" value="萧然"/>
<!-- 第二种,bean注入,ref-->
<property name="address" ref="address" />
<!-- 第三种,数组-->
<property name="books">
<array>
<value>红楼梦</value>
<value>西游记</value>
<value>水浒传</value>
<value>三国演义</value>
</array>
</property>
<!-- 第四种,list-->
<property name="hobbys">
<list>
<value>听歌</value>
<value>敲代码</value>
<value>看动漫</value>
<value>日本語の勉強</value>
</list>
</property>
<!-- 第五种,Map-->
<property name="card">
<map>
<entry key="身份证" value="362202200003456154"></entry>
<entry key="手机号" value="1565541068"></entry>
</map>
</property>
<!-- 第六种,Set-->
<property name="games">
<set>
<value>LOL</value>
<value>COC</value>
<value>BOB</value>
</set>
</property>
<!-- 第七种,null-->
<property name="wife">
<null/>
</property>
<!-- 第八种,Proerties-->
<property name="info">
<props>
<prop key="学号">20190305</prop>
<prop key="姓名">萧然</prop>
<prop key="性别">男</prop>
<prop key="username">admin</prop>
<prop key="password">sa123</prop>
</props>
</property>
</bean>
</beans>
2.使用注解自动装配
异常信息:
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 17 in XML document from class path resource [beans.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 17; columnNumber: 33; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 ‘context:annotation-config’ 的声明。
这里报错指向的是加载xml文件哪一行
当要实现注解扫描的时候
出现这种问题是xsi:schemaLocation没有让你导入的命名空间找到对应的URI地址
3.纯注解,配置AOP
xml文件一定要有
<!--配置Spring的扫描目录,同时也会注册@Autowired @Resource 等注解-->
<context:component-scan base-package="com.xjx"/>
<!-- // 开启切面自动代理-->
<aop:aspectj-autoproxy/>
AOP 切面
package com.xjx.Aoontation;
//全注解
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Component//向Spring容器中注册MyAopAspectAnnotation
@Aspect//切面类的注解
public class MyAopAspectAnnotation {
public MyAopAspectAnnotation(){
System.out.println("MyAopAspectAnnotation静态初始化");
}
/**
* 定义切点 用于取代:<aop:pointcut id="myPointcut" expression="execution(*
com.gx.dao..*.*(..))"/>
* 要求:方法必须是private,没有值,名称自定义,没有参数
*/
@Pointcut("execution(* com.xjx.service.UserServiceImpl.*(..))")
private void myPointcut() {
}
@Before(value = "myPointcut()")
private void befor(){
System.out.println("=======方法执行前=======");
}
@After(value = "myPointcut()")
private void after(){
System.out.println("=======方法执行后=======");
}
}
测试类接口
package com.xjx.service;
public interface UserService {
public void add();
public void delete();
public void update();
public void select();
}
测试类接口实现
package com.xjx.service;
public class UserServiceImpl implements UserService{
@Override
public void add() {
System.out.println("新增了一个用户");
}
@Override
public void delete() {
System.out.println("删除了一个用户");
}
@Override
public void update() {
System.out.println("修改了一个用户");
}
@Override
public void select() {
System.out.println("查询了一个用户");
}
}
xml配置
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.xjx"/>
<!--注册bean-->
<bean id="userService" class="com.xjx.service.UserServiceImpl"/>
<bean id="log" class="com.xjx.log.Log"/>
<bean id="afterLog" class="com.xjx.log.AfterLog"/>
<!-- 方式一:使用原生Spring API接口-->
<!-- 配置aop:需要导入aop的约束-->
<!-- <aop:config>-->
<!--<!– 切入点:expression:表达式,execution(要执行的位置 * * * * *)–>-->
<!-- <aop:pointcut id="pointcut" expression="execution(* com.xjx.service.UserServiceImpl.*(..))"/>-->
<!--<!– 执行环绕增强–>-->
<!-- <aop:advisor advice-ref="log" pointcut-ref="pointcut"/>-->
<!-- <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/>-->
<!-- </aop:config>-->
<!-- 方式二:自定义类-->
<!-- <bean id="diy" class="com.xjx.diy.DiyPointCut"/>-->
<!-- -->
<!-- <aop:config>-->
<!--<!– 自定义切面,ref 要引用的类–>-->
<!-- <aop:aspect ref="diy">-->
<!--<!– 切入点–>-->
<!-- <aop:pointcut id="point" expression="execution(* com.xjx.service.UserServiceImpl.*(..))"/>-->
<!--<!– 通知 切入自定义类 要切入的切入点–>-->
<!--<!– before 前置 after 后置–>-->
<!-- <aop:before method="before" pointcut-ref="point"/>-->
<!-- <aop:after method="after" pointcut-ref="point"/>-->
<!-- </aop:aspect>-->
<!-- </aop:config>-->
<!-- 方式三 也可以直接用注解注入bean-->
<!-- <bean id="annotationPointCut" class="com.xjx.Aoontation.AoontationPointCut"/>-->
<!-- // 开启切面自动代理-->
<aop:aspectj-autoproxy/>
</beans>
SpringMvc 注意事项
1、新建项目
1.1、添加web支持
1.2、统一 UTF-8编译环境
1.3、配置Tomcat
-Dfile.encoding=UTF-8
修改Tomcat运行目录(可以把后面自动生成的删掉)
完成之后运行看一下能不能找到初始页面
1.4、导入相关java包 (这个时候还没了解Maven)
lib放在WEB-INF下
创建xml文件放在src文件下
2、启动异常
异常信息:12-Dec-2021 15:02:33.152 严重 [main] org.apache.catalina.util.LifecycleBase.handleSubClassException 初始化组件[Connector[HTTP/1.1-8080]]失败。
原因:进程8080被占用
查找线程 占用 8080 端口
netstat -ano
任务管理器 —》详细信息 找到相应PID 结束进程 搞定
或者
taskkill -f -pid 15476 (后面是自己要停的id)
成功: 已终止 PID 为 15476 的进程。
搞定
异常信息: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind这个是1099端口被占用
解决方法,同上
3、修改默认启动页面
4、使用HttpServletRequest中的两个包需要从Tomact环境中引用(servlet-api.jar和jsp-api.jar)
5、跳转路径
页面的跳转路径要和@RequestMapping注解的value值一致
这一块@Controller层还有一个@RequestMapping(“/returnType”)
6、测试页面返回Json数据
引入:JQ
javkson-annotations-2.11.1.jar
javkson-core-2.11.1.jar
javkson-databind-2.11.1.jar
SpringMVC-servlet.xml
添加:mvc依赖
<!--引入mvc后需要添加 mvc注解驱动-->
<mvc:annotation-driven/>
<!-- 静态资源映射-->
<mvc:resources mapping="/js/**" location="/js/"/>
启动 异常 jq找不到资源 页面报500错误
异常信息:12-Dec-2021 20:28:36.865 严重 [http-nio-8080-exec-6] org.springframework.web.servlet.FrameworkServlet.initServletBean Context initialization failed org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 22 in XML document from class path resource [springMVC-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 29; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明。xml文件错误,复制的时候弄错了,离谱的是可以点进去
搞定
7、时间处理
注意type为datetime-local时
时间是没有秒的 格式如果为@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
请求报400异常
数据格式对不上
birthday:<input name="birthday" type="datetime-local"> <br>
异常信息:14-Dec-2021 16:45:38.132 警告 [http-nio-8080-exec-4] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type ‘java.lang.String’ to required type ‘java.util.Date’; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.util.Date] for value ‘2021-12-14T16:42’; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2021-12-14T16:42]]
MyBatis 注意事项
1、异常信息:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
映射文件中SQL语句的id要和mapper接口中的方法名不一致
2、版本问题
配置连接数据库的数据源配置
3.0+版本:<property name="driver" value="com.mysql.jdbc.Driver"/>
8.0+版本:<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
3、异常信息:java.sql.SQLException: The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the ‘serverTimezone’ configuration property) to use a more specifc time zone value if you want to utilize time zone support.
解决办法:MySQl数据库8.0之后链接数据库要加上时区以及字符信息
4.数据库参数通过properties引入注意事项
5.小结
MyBatis Meaven工程创建 =》创建MyBatis核心配置文件=》jdbc.properties外置引入===》创建实体类===》创建mapper接口方法===》创建MyBatis_Mapper.xml映射文件===》测试是否成功增删改查
Meaven工程创建 pom.xml文件
主要引入MyBatis核心以及MySql驱动
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
创建MyBatis核心配置文件
<?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>
<!--
MyBatis核心配置文件中标签顺序
he content of element type "configuration" must match "
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
databaseIdProvider?,mappers?
-->
<!--引入properties文件-->
<properties resource="jdbc.properties"></properties>
<!-- 设置类型别名-->
<typeAliases>
<!--
typeAlias:设置某个类型的别名
属性:
type:设置需要设置类型的别名
alias:设置某个类型的别名,若不设置别名,那么该类型拥有默认的别名,即类名且不区分大小写
-->
<!-- <typeAlias type="com.xjx.mybatis.pojo.User" alias="User"/>-->
<!-- 以包为单位,将包下所有的类型设置默认的类型别名,即类名且不区分大小写-->
<package name="com.xjx.mybatis.pojo"/>
</typeAliases>
<!--设置连接数据库的环境-->
<!--
environments:配置多个链接数据库的环境
属性:
default:设置默认使用环境的id
-->
<environments default="development">
<!-- environment:配置某个具体的环境
属性:
id:表示链接数据库的环境的唯一标识 不能重复
-->
<environment id="development">
<!-- transactionManager:设置事务管理方式
属性:
type="JDBC|MANAGED"
JDBC:表示当前环境中,执行SQL时使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动来处理
MANAGED:被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!--
dataSource:配置数据源
属性:
type:设置数据源类型
type=“POOLED|UNPOOLED|JNDI”
POOLED:表示使用数据库连接池来缓存数据库链接
UNPOOLED:表示不使用数据库连接池
JNDI:表示使用上下文中的数据源
-->
<dataSource type="POOLED">
<!-- 设置链接数据库的驱动-->
<property name="driver" value="${jdbc.driver}"/>
<!-- 设置;链接数据库的链接地址-->
<property name="url" value="${jdbc.url}"/>
<!-- 设置链接数据库的用户名-->
<property name="username" value="${jdbc.username}"/>
<!-- 设置链接数据库的密码-->
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--
resources文件下创建包 用/分开 用.分开只是文件夹全名
-->
<!--引入映射文件-->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/>-->
<!--
以包为单位引入映射文件
要求:
1、mapper接口所在的包要和映射文件所在的包一致
2、mapper接口要和映射文件的名字一致
-->
<package name="com.xjx.mybatis.mapper"/>
</mappers>
</configuration>
将数据库地址配置环境外置引入
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
# jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
jdbc.username=root
jdbc.password=root
MyBatis_Mapper.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="com.xjx.mybatis.mapper.ParameterMapper">
<!-- List<User> getAllUser();-->
<!--
查询功能的标签必须设置resultType或resultMap
resultType:设置默认的映射关系 字段名和属性名一致
resultMap:设置自定义的映射关系 一对多,多对一
-->
<select id="getAllUser" resultType="User">
select * from t_user
</select>
</mapper>
封装SqlSessionUtils工具类
public class SqlSessionUtils {
public static SqlSession getSqlSession(){
SqlSession sqlSession=null;
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession = sqlSessionFactory.openSession(true);
} catch (IOException e) {
e.printStackTrace();
}
return sqlSession;
}
}
log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
%m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
6.无效的绑定语句
异常信息:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xjx.mybatis.mapper.ParameterMapper.checkLogin报错原因:MyBatis映射文件SQL语句ID和mapper接口方法没有一致
7.SQL参数绑定异常
异常信息:Cause: org.apache.ibatis.binding.BindingException: Parameter 'username' not found. Available parameters are [arg1, arg0, param1, param2]多参数 arg+顺序数 0开始
8.mapper接口的方法的参数是实体类类型的参数 新增中文乱码问题
为什么这种方式新增需要修改IDEA字符编码,非传参新增不需要修改也不会导致中文乱码
9.SQL语法错误
异常信息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from t_user where id = 5' at line 110.TooManyResultsException
解决:1、SQL希望返回一行数据,但实际select得到的,超过一行数据。
2、先查清楚SQL和WHERE条件,确定是返回一行的情况,再测试方法。
3、或者直接用List集合接收
11.Mybatis核心文件或者映射文件没有写全
异常信息:Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: The setting is not known. Make sure you spelled it correctly (case sensitive). ![在这里插入图片描述](https://img-blog.csdnimg.cn/dd6c073a858f46e6a542b127a45f9f9c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6JCn5rCP6JCn54S2,size_20,color_FFFFFF,t_70,g_se,x_16) ### 12.实体类异常 异常信息:Caused by: org.apache.ibatis.reflection.ReflectionException: Cannot set value of property 'dept.did' because 'dept.did' is null and cannot be instantiated on instance of com.xjx.mybatis.pojo.Dept. Cause:org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.xjx.mybatis.pojo.Dept with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.xjx.mybatis.pojo.Dept.()
修改之后依旧报错
Error instantiating class com.xjx.mybatis.pojo.Emp with invalid types (Integer,String,Integer,String,String,Dept) or values (1,小明,15,男,111@qq.com,1). Cause: java.lang.IllegalArgumentException: argument type mismatch
解决办法:实体类中只有有参构造器,需创建一个无参构造器。
13.IllegalArgumentException异常
异常信息:Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.xjx.mybatis.mapper.EmpMapper.getEmpAndDeptByStepTwo原因select属性没有写全类名
<association property="dept"
select="getEmpAndDeptByStepTwo"
column="did"></association>
14.开启延迟加载
异常信息:Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: The setting lazyLoadingEnabled is not known. Make sure you spelled it correctly (case sensitive).复制参数名时多了个空格
节省资源
1现在我需要先查询用户信息,再查询相关部门信息
不开启延迟加载:先全部查询出来,再给出结果
开启延迟加载:先查询用户信息,给结果,再查询相关部门信息,给结果
2直接通过条件查询部门信息
不开启延迟加载:先全部查询出来,再给出结果
开启延迟加载:先查询用户信息,再查询相关部门信息,给结果
全局开启延迟加载后,如果有部分步式查询想要立即加载怎么解决?
fetchType属性可以控制下一步查询立即加载 注意:只有在开启了延迟加载时,才会生效,
select: 设置分布查询的sql的唯一标识(namespace.SQLId或mapper接口的全类名。方法名)
column: 设置分步查询的条件
fetchType: eager立即加载 lazy延迟加载
<association property="dept"
select="com.xjx.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
column="did"
fetchType="eager"></association>
多对一:对象 多个人对应一个部门 创建部门对象在员工信息实例中 private Dept dept; <association property="dept" javaType="Dept">
一对多:集合 一个部门对应多个人 创建数组员工信息在部门实例中 public List<Emp> emp; <collection property="emps" ofType="Emp">
15.resultMap重复
异常信息:Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'com/xjx/mybatis/mapper/DeptMapper.xml'. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xjx.mybatis.mapper.DeptMapper.deptAndEmpResultMap16.逆向工程
正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程 的。
逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件
异常信息:Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.0:generate (default-cli) on project MyBatis_MBG: Exception getting JDBC Driver
链接不了数据库,获取JDBC驱动时异常
17、逆向工程测试
异常信息:Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure修改:jdbc.driver=com.mysql.cj.jdbc.Driver
异常信息:Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver修改后报了另外一个异常,检查一下驱动版本
MySql驱动版本为5.1.8
说明上面的越改问题越大:给它改回去
jdbc.driver=com.mysql.jdbc.Driver
检查链接地址:jdbc.url=jdbc:mysql://localhost:13306/mybatis?useUnicode=true&characterEncoding=UTF-8
这个地址用的是6.+的驱动链接地址
修改:jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
异常信息:Cause: java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.还是异常
接着改:jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8
行了
注意:
generatorConfig.xml 文件配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--
targetRuntime: 执行生成的逆向工程的版本
MyBatis3Simple: 生成基本的CRUD(清新简洁版)
MyBatis3: 生成带条件的CRUD(奢华尊享版)
-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 数据库的连接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"
userId="root"
password="root">
</jdbcConnection>
<!-- javaBean的生成策略-->
<javaModelGenerator targetPackage="com.xjx.mybatis.bean"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- SQL映射文件的生成策略 -->
<sqlMapGenerator targetPackage="com.xjx.mybatis.mapper"
targetProject=".\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- Mapper接口的生成策略 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.xjx.mybatis.mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 逆向分析的表 -->
<!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
<!-- domainObjectName属性指定生成出来的实体类的类名 -->
<table tableName="t_emp" domainObjectName="Emp"/>
<table tableName="t_dept" domainObjectName="Dept"/>
</context>
</generatorConfiguration>
jdbc.properties 配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>com.xjx.mybatis</groupId>
<artifactId>MyBatis_MBG</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!-- 依赖MyBatis核心包 -->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<!-- 控制Maven在构建过程中相关配置 -->
<build>
<!-- 构建过程中用到的插件 -->
<plugins>
<!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.0</version>
<!-- 插件的依赖 -->
<dependencies>
<!-- 逆向工程的核心依赖 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.2</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.8</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
中文异常
修改完没反应的话删一下缓存文件
请求异常
415异常
1、请求头指定数据类型错误
headers.put("Content-Type", "application/json; charset=utf-8");