mybatis mapper 注解.xml怎么知道有没有编译错误?哪个位置有错误?

10726人阅读
使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志。有些时候就不能。
无法输出日志的时候,无论怎么配置log4j,不管是properties的还是xml的,都不起作用。
有些时候,我们没做什么配置就能输出日志....
这是一个让无数人烦躁的问题。其实解决问题很容易(我过了这么久才解决,以前都用拦截器输出)。
这是一个普大喜奔的日子,让我们一起来看看如何解决mybatis的日志问题。
为什么说这个问题很容易解决呢?因为mybatis的文档写的很清楚。
为什么我们都没找到解决办法呢?因为即使看过文档的人,也未必去看Logging这一节。但是这一节正是解决问题的关键。
已经等不及的小伙伴们可以直接去这里看文档:
提醒最常用的方法不再这个链接中,但是这个文档提供了对log4j的详细配置。本文下面的内容大部分是这个文档的Copy。
Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种方式:
SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging
具体选择哪个日志实现由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。
不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。
记住这点非常重要。这意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。
&这种做法不免让人悲摧,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存 在,按优先级Log4J自然就被忽略了!
不过,如果你的应用部署在一个包含Commons Logging的环境, 而你又想用其他的日志框架,你可以根据需要调用如下的某一方法:
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
org.apache.ibatis.logging.LogFactory.useJdkLogging();
org.apache.ibatis.logging.LogFactory.useCommonsLogging();
org.apache.ibatis.logging.LogFactory.useStdOutLogging();
如果的确需要调用以上的某个方法,请在调用所有其他MyBatis方法前调用它。另外,只有在相应日志实现存在 的前提下,调用对应的方法才是有意义的,否则MyBatis一概忽略。如你环境中并不存在Log4J,你却调用了 相应的方法,MyBatis就会忽略这一调用,代之默认的查找顺序查找日志实现。
例如使用log4j就需要在调用mybatis方法前,先执行代码:
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
上面这是一种解决办法,但是有些情况你不知道何时执行这个方法。
mybatis还提供了另外一种(推荐使用这种)解决方法,继续看下面。
另一种解决为,在mybatis-config.xml配置文件中:
&configuration&
&settings&
&setting name=&logImpl& value=&LOG4J&/&
&/settings&
&/configuration&
这里只写了关键的一部分配置信息,在你自己配置的基础上增加&setting name=&logImpl& value=&LOG4J&/&即可。这样一来log4j的配置信息就会起作用。
参数说明:
Mybatis对Log4j的配置支持:
Logging Configuration
MyBatis可以对包、类、命名空间和全限定的语句记录日志。
具体怎么做,视使用的日志框架而定,这里以Log4J为例。配置日志功能非常简单:添加几个配置文件, 如log4j.properties,再增加个jar包,如log4j.jar。下面是具体的例子,共两个步骤:
步骤1: 增加Log4J jar包
因为采用Log4J,要确保在应用中对应的jar包是可用的。要满足这一点,只要将jar包添加到应用的classpath中即可。 Log4J的jar包可以从上方的链接下载。
具体而言,对于web或企业应用,需要将log4j.jar 添加到WEB-INF/lib 目录; 对于独立应用, 可以将它添加到jvm的-classpath启动参数中。
步骤2:配置Log4J
配置Log4J比较简单, 比如需要记录这个mapper接口的日志:
package org.mybatis.
public interface BlogMapper {
@Select(&SELECT * FROM blog WHERE id = #{id}&)
Blog selectBlog(int id);
只要在应用的classpath中创建一个名称为log4j.properties的文件, 文件的具体内容如下:
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
添加以上配置后,Log4J就会把 org.mybatis.example.BlogMapper 的详细执行日志记录下来,对于应用中的其它类则仅仅记录错误信息。
也可以将日志从整个mapper接口级别调整到到语句级别,从而实现更细粒度的控制。如下配置只记录 selectBlog 语句的日志:
log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE
与此相对,可以对一组mapper接口记录日志,只要对mapper接口所在的包开启日志功能即可:
log4j.logger.org.mybatis.example=TRACE
某些查询可能会返回大量的数据,只想记录其执行的SQL语句该怎么办?为此,Mybatis中SQL语 句的日志级别被设为DEBUG(JDK Logging中为FINE),结果日志的级别为TRACE(JDK Logging中为FINER)。所以,只要将日志级别调整为DEBUG即可达到目的:
log4j.logger.org.mybatis.example=DEBUG
要记录日志的是类似下面的mapper文件而不是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.BlogMapper&&
&select id=&selectBlog& resultType=&Blog&&
select * from Blog where id = #{id}
对这个文件记录日志,只要对命名空间增加日志记录功能即可:
log4j.logger.org.mybatis.example.BlogMapper=TRACE
进一步,要记录具体语句的日志可以这样做:
log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE
看到了把,两种配置没差别!
配置文件log4j.properties的余下内容是针对日志格式的,这一内容已经超出本 文档范围。关于Log4J的更多内容,可以参考Log4J的网站。不过,可以简单试一下看看,不同的配置 会产生什么不一样的效果。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:510565次
积分:6626
积分:6626
排名:第1487名
原创:149篇
转载:17篇
评论:311条
文章:12篇
阅读:54825
文章:13篇
阅读:61930Mybatis中配置Mapper的方法 - 好好学习,天天向上 - ITeye技术网站
博客分类:
Mybatis中配置Mapper的方法
在这篇文章中我主要想讲一下Mybatis配置文件中mappers元素的配置。关于基础部分的内容可以参考。
我们知道在Mybatis中定义Mapper信息有两种方式,一种是利用xml写一个对应的包含Mapper信息的配置文件;另一种就是定义一个Mapper接口,然后定义一些相应的操作方法,再辅以相应的操作注解。
现假设我有这样一个实体类:
package com.tiantian.mybatis.
public class User {
public int getId() {
public void setId(int id) {
public String getName() {
public void setName(String name) {
this.name =
public int getAge() {
public void setAge(int age) {
this.age =
它对应的数据库表结构是这样的:
然后我要利用Mybatis对它做一个简单的增删改查操作,那么如果利用xml配置Mapper的方式来定义的话,我对应的UserMapper.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.tiantian.mybatis.mapper.UserMapper"&
&insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyColumn="id"&
insert into t_user(name, age) values(#{name}, #{age})
&update id="updateUser" parameterType="User"&
update t_user set name=#{name}, age=#{age} where id=#{id}
&select id="findById" parameterType="int" resultType="User"&
select * from t_user where id=#{id}
&delete id="deleteUser" parameterType="int"&
delete from t_user where id=#{id}
如果使用接口加注解的方式,那么我们的UserMapper接口应该这样定义:
package com.tiantian.mybatis.
import org.apache.ibatis.annotations.D
import org.apache.ibatis.annotations.I
import org.apache.ibatis.annotations.S
import org.apache.ibatis.annotations.U
import com.tiantian.mybatis.model.U
public interface UserMapper {
@Insert("insert into t_user(name, age) values(#{name}, #{age})")
public void insertUser(User user);
@Update("update t_user set name=#{name}, age=#{age} where id=#{id}")
public void updateUser(User user);
@Select("select * from t_user where id=#{id}")
public User findById(int id);
@Delete("delete from t_user where id=#{id}")
public void deleteUser(int id);
注意看这里我故意把UserMapper接口的namespace也就是它的包名置为与UserMapper.xml的namespace属性不一样。这主要是为了要更好的讲以下的内容。
接下来要做的就是把Mapper信息注册到Mybatis的配置中,告诉Mybatis我们定义了哪些Mapper信息。这主要是在Mybatis的配置文件中通过mappers元素来进行的。在以前版本的Mybatis中我们在Mybatis的配置文件中需要这样定义Mapper信息资源的位置。
&mapper resource="com/tiantian/mybatis/mapper/UserMapper1.xml"/&
&mapper url="file:///E:/UserMapper.xml"/&
&/mappers&
这主要是通过mapper元素的resource和url属性来指定的,resource属性指定的是相对于跟类路径下的资源,url属性指定的是通过URL可以获取到的资源。这有一点不好的地方,当我们使用Mapper接口加注解来定义当前Mapper的操作信息时,我们还需要定义一个与它对应的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.tiantian.mybatis.mapperinterface.UserMapper"&
package com.tiantian.mybatis.
import org.apache.ibatis.annotations.D
import org.apache.ibatis.annotations.I
import org.apache.ibatis.annotations.S
import org.apache.ibatis.annotations.U
import com.tiantian.mybatis.model.U
public interface UserMapper {
@Insert("insert into t_user(name, age) values(#{name}, #{age})")
public void insertUser(User user);
@Update("update t_user set name=#{name}, age=#{age} where id=#{id}")
public void updateUser(User user);
@Select("select * from t_user where id=#{id}")
public User findById(int id);
@Delete("delete from t_user where id=#{id}")
public void deleteUser(int id);
我发现在现在使用的这个Mybatis3.2.1中这个问题已经得到了改善,现在我们在定义基于接口的定义的Mapper时可以通过一个class属性来指定接口。
&mapper class="com.tiantian.mybatis.mapperinterface.UserMapper"/&
&/mappers&
除了通过class属性指定Mapper接口外,Mybatis还为我们提供了一个可以同时指定多个Mapper接口的方法。在现在的Mybatis版本中我们可以在mappers元素下面定义一个package子元素,用以指定Mapper接口所在的包,这样Mybatis就会把这个包下面的所有Mapper接口都进行注册。
&package name="com.tiantian.mybatis.mapperinterface"/&
&/mappers&
这里的一个package只针对于一个包。当在多个包里面定义有Mapper接口时,我们需要定义对应的多个package元素。
这四种注册Mapper的方式就是我想在这篇文章中表达的。总结一下:
&!-- 通过package元素将会把指定包下面的所有Mapper接口进行注册 --&
&package name="com.tiantian.mybatis.mapperinterface"/&
&!-- 通过mapper元素的resource属性可以指定一个相对于类路径的Mapper.xml文件 --&
&mapper resource="com/tiantian/mybatis/mapper/UserMapper.xml"/&
&!-- 通过mapper元素的url属性可以指定一个通过URL请求道的Mapper.xml文件 --&
&mapper url="file:///E:/UserMapper.xml"/&
&!-- 通过mapper元素的class属性可以指定一个Mapper接口进行注册 --&
&mapper class="com.tiantian.mybatis.mapperinterface.UserMapper"/&
&/mappers&
当使用mapper元素进行Mapper定义的时候需要注意:mapper的三个属性resource、url和class对于每个mapper元素只能指定一个,要么指定resource属性,要么指定url属性,要么指定class属性,不能都指定,也不能都不指定。
下面将对上面的代码给出一些对应的测试代码。先贴出测试对应的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&
&properties resource="config/jdbc.properties"&&/properties&
&typeAliases&
&package name="com.tiantian.mybatis.model"/&
&/typeAliases&
&environments default="development"&
&environment id="development"&
&transactionManager type="JDBC" /&
&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&
&mapper resource="com/tiantian/mybatis/mapper/UserMapper.xml"/&
&package name="com.tiantian.mybatis.mapperinterface"/&
&/mappers&
&/configuration&
1.对于使用xml方式定义的UserMapper.xml,然后直接使用SqlSession访问定义在其中的statement的测试:
package com.tiantian.mybatis.
import org.apache.ibatis.session.SqlS
import org.apache.ibatis.session.SqlSessionF
import org.junit.B
import org.junit.T
import com.tiantian.mybatis.model.U
import com.tiantian.mybatis.util.U
* 这个类主要用来测试直接使用SqlSession访问定义在UserMapper.xml文件中的statement
public class UserMapperTest {
SqlSessionFactory sqlSessionFactory =
public void before() {
sqlSessionFactory = Util.getSqlSessionFactory();
public void testInsert() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setName("张三");
user.setAge(30);
sqlSession.insert("com.tiantian.mybatis.mapper.UserMapper.insertUser", user);
} finally {
sqlSession.close();
public void testUpdate() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(1);
user.setName("李四");
user.setAge(34);
sqlSession.update("com.tiantian.mybatis.mapper.UserMapper.updateUser", user);
} finally {
sqlSession.close();
public void testFind() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("com.tiantian.mybatis.mapper.UserMapper.findById", 1);
System.out.println(user.getId() + "--" + user.getName() + "--" + user.getAge());
} finally {
sqlSession.close();
public void testDelele() {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("com.tiantian.mybatis.mapper.UserMapper.deleteUser", 2);
} finally {
sqlSession.close();
2.对于使用Mapper接口加对应的注解来定义的Mapper信息直接使用SqlSession访问Mapper接口中使用注解定义好的statement的测试:
package com.tiantian.mybatis.
import org.apache.ibatis.session.SqlS
import org.apache.ibatis.session.SqlSessionF
import org.junit.B
import org.junit.T
import com.tiantian.mybatis.model.U
import com.tiantian.mybatis.util.U
*这个类是测试直接使用SqlSession访问UserMapper接口中使用注解定义好的statement
public class UserMapperTest2 {
SqlSessionFactory sqlSessionFactory =
public void before() {
sqlSessionFactory = Util.getSqlSessionFactory();
public void testInsert() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setName("张三");
user.setAge(30);
sqlSession.insert("com.tiantian.mybatis.mapperinterface.UserMapper.insertUser", user);
} finally {
sqlSession.close();
public void testUpdate() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(1);
user.setName("李四");
user.setAge(34);
sqlSession.update("com.tiantian.mybatis.mapperinterface.UserMapper.updateUser", user);
} finally {
sqlSession.close();
public void testFind() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("com.tiantian.mybatis.mapperinterface.UserMapper.findById", 1);
System.out.println(user.getId() + "--" + user.getName() + "--" + user.getAge());
} finally {
sqlSession.close();
public void testDelele() {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("com.tiantian.mybatis.mapperinterface.UserMapper.deleteUser", 3);
} finally {
sqlSession.close();
3.对于使用Mapper接口加注解定义好的Mapper信息通过SqlSession获取其对应的Mapper接口来操作其中定义好的statement的测试:
package com.tiantian.mybatis.
import org.apache.ibatis.session.SqlS
import org.apache.ibatis.session.SqlSessionF
import org.junit.B
import org.junit.T
import com.tiantian.mybatis.mapperinterface.UserM
import com.tiantian.mybatis.model.U
import com.tiantian.mybatis.util.U
*这个类是测试使用SqlSession获取UserMapper接口来执行使用注解定义在UserMapper接口中的statement
public class UserMapperTest3 {
SqlSessionFactory sqlSessionFactory =
public void before() {
sqlSessionFactory = Util.getSqlSessionFactory();
public void testInsert() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setName("张三");
user.setAge(30);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.insertUser(user);
} finally {
sqlSession.close();
public void testUpdate() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(1);
user.setName("李四");
user.setAge(34);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.updateUser(user);
} finally {
sqlSession.close();
public void testFind() {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findById(1);
System.out.println(user.getId() + "--" + user.getName() + "--" + user.getAge());
} finally {
sqlSession.close();
public void testDelele() {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteUser(5);
} finally {
sqlSession.close();
浏览 56288
注解方式下 怎么编写动态SQL? xml配置下 里面有 if when 标签 注解怎么搞啊?现在的版本不知道注解是否支持动态SQL,以前用的3.0.X是不支持的。这就是注解与XML配置的一个不同点。
问一个困扰我很久而且很急的问题:就是查询的时候怎么使用模糊查询?这篇文章有讲模糊查询,在Mysql数据库上测试通过。也有人是这样做,在mapper文件中写“select * from t where name like #{name}”,然后再传递变量name的时候,实际上传过来的是已经封装好的带有通配符的内容。此外,还有一种思路是使用拦截器对SQL的生成进行拦截,使生成的SQL满足标准SQL模糊查询,具体可以参考
文中的mappers配置有错误,根据mybatis3的DTD,package元素的配置必须在mapper元素之后感谢ja_ll_ck的提醒,这里确实错了。上面的内容我都是测试过的,总结那里是我把所有四种配置mapper的方式都贴出来,所以那个是没有问题的。有问题的是最后那个配置文件&?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&
&properties resource="config/jdbc.properties"&&/properties&
&typeAliases&
&package name="com.tiantian.mybatis.model"/&
&/typeAliases&
&environments default="development"&
&environment id="development"&
&transactionManager type="JDBC" /&
&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&
&package name="com.tiantian.mybatis.mapperinterface"/&
&mapper resource="com/tiantian/mybatis/mapper/UserMapper.xml"/&
&/mappers&
&/configuration&
这里可能是当初copy代码的时候去掉注解的时候去掉多了,回头待我把它改过来。
浏览: 1386063 次
来自: 长沙
浏览量:44313
浏览量:363596
浏览量:382283
浏览量:73518
浏览量:30938
浏览量:12618
浏览量:28989
这个解析word07的文档怎么报错呢 XWPFDocument ...
正在学习ehcache.
写的很不错,谢谢博主了
hailongcool1986 写道同样问题,文本消息可以回滚 ...利用MyBatis Generator自动创建代码 - 景培 - ITeye技术网站
如果你使用过hibernate的eclipse插件自动创建DAO文件,那么就容易理解下面介绍的内容;如果你还没有用过hibernate也无妨。下面介绍使用mybatis 3的eclipse插件自动生成相关文件以及如何使用这些文件。
eclipse插件安装地址:
附件有link安装包,link安装方式参考
MyBatis Generator详细介绍参见:
安装插件的过程就不说了,安装完后,eclipse中File-》new-》other中会发现多了mybatis选项说明插件安装成功。
如何使用插件
在任意项目中利用上图中的向导创建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 &
&context id="context1" &
&jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@192.168.2.21:1521:ORCL" userId="atfm" password="atfm" /&
&javaModelGenerator targetPackage="com.topsci.atfm.persistence.mybatis.model" targetProject="ATFM" /&
&sqlMapGenerator targetPackage="com.topsci.atfm.persistence.mybatis.mapper" targetProject="ATFM" &&/sqlMapGenerator&
&javaClientGenerator targetPackage="com.topsci.atfm.persistence.mybatis.client" targetProject="ATFM" type="XMLMAPPER" /&
&table schema="" tableName="ATFM_ROUTE_CTRL" &&/table&
&table tableName="SYN_TRACK_EST" domainObjectName="AtfmTrack"&&/table&
&/context&
&/generatorConfiguration&
根据名称应该能才出来大致的意思。
配置好连接数据库及表的信息后就可以利用插件自动生成代码了。
点击上图中的选项,如果配置正确,便自动创建相关文件了。
文件主要有三类:
client包,mapper 接口文件
model包,实体bean文件
mapper包,mapper xml文件
如何使用这些自动生成的文件
首先需要将mapper包下的xml文件添加到mybatis的sqlmapper文件中
然后程序中这样使用:
public List&TrackBean& selectTrackOnRoute(String routeName) {
List&TrackBean& rt =
SqlSession session =
session = sqlSessionFactory.openSession();
AtfmTrackMapper mapper = session.getMapper(AtfmTrackMapper.class);
// 构造查询条件
AtfmTrackExample example = new AtfmTrackExample();
example.createCriteria()
.andRouteIs(routeName);
List&AtfmTrack& list = mapper.selectByExample(example);
// 包装成TrackBean
rt = this.toTrackBean(list);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
} finally {
if (session != null)
session.close();
如果where条件比较复杂,还可以自定义查询条件,如上例中andRouteIs(routeName)就是自定义的查询条件。可以在
具体的Example的内部类Criteria中自定义查询条件:
public Criteria andRouteIs(String routeName){
StringBuffer sb = new StringBuffer("point_name in " +
"(select p.point from route_point p where p.route = '" + routeName + "') " +
"AND FLIGHT_NO IN " +
"(select D.FLIGHT_NO from syn_aftn_dynamic_recent d " +
"where d.route like '%" + routeName + "%')");
addCriterion(sb.toString());
我们可能会担心一旦重新执行generate的时候,我们自己编写的代码会不会丢失,不会的,插件不会修改或丢弃我们自己编写的代码。
一旦掌握了插件如何使用,重要的工作就是如何使用XXXExample类了。这种方式,完全不用编写繁琐的mapper xml文件。
下载次数: 3376
浏览 74429
你好,好像没看到数据库驱动配置的地方如何使用插件 下面第一段xml代码
这个自动生成的DAO接口, 没有批量插入或者修改的方法, 楼主有没比较好的实现方法.让这个插件自动生成批量插入和修改的方法已经很久没研究这方面了批量?你是要考虑操作效率吗还是仅仅只是想要批量操作功能,如果是前者,工具肯定没有;如果是后者的话,自己包装一下不就OK了
怎么用一个基类继续它来添加复杂查询条件的实现呢?如果where条件比较复杂,可以在具体的Example的内部类Criteria中自定义查询条件
为何总是提示找不到JDBC Driver呢??已经把Driver加入到了项目的Lib下面。项目里没有这个数据局驱动jar包会报这种错误。
原来一年前我已经来过这里了哈哈,欢迎常来
为何总是提示找不到JDBC Driver呢??已经把Driver加入到了项目的Lib下面。你是哪个环节提示找不到driver呢,是使用插件创建代码过程还是创建完代码运行的时候?建议先不适用mybatis测试一下看有没有问题
浏览: 189237 次
来自: 北京
写道List&ResolveInfo ...
&div class=&quote_title ...
List&ResolveInfo& activit ...
你好,好像没看到数据库驱动配置的地方
Exception in thread &main& ...

我要回帖

更多关于 mybatis mapper.xml 的文章

 

随机推荐