eclipse自动生成注解mapper怎么没有注解

MyBatis(21)
MyBatis提供了多种的注解映射,如SELECT、UPDATE、INSERT和DELETE。让我主详细来看一下这些映射的应用。
1. &@Insert
我们可以使用@Insert注解来声明一个INSERT的映射。
package com.owen.mybatis.
public interface StudentMapper
@Insert(&INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,ADDR_ID, PHONE)
VALUES(#{studId},#{name},#{email},#{address.addrId},#{phone})&)
int insertStudent(Student student);
在insertStudent()方法中,我们注解了@Insert,这个将会返回受影响的行数通过insert的声明。
在前面我们使用xml的文件时,我们声明了自动生成主键的语句。这注解的方法中,我们同样可能用@Options的方法来注解声明生成主键,这个方法中包含useGeneratedKeys和keyProperty的参数。这两个参数就是要让数据可以形成auto_increment的列值,其值是已经的列中某个对象的列作为值。
@Insert(&INSERT INTO STUDENTS(NAME,EMAIL,ADDR_ID, PHONE)
VALUES(#{name},#{email},#{address.addrId},#{phone})&)
@Options(useGeneratedKeys=true, keyProperty=&studId&)
int insertStudent(Student student);
这里的STUD_ID的列将会通过MYSQL的数据库自动生成,和它值将和studId的值是一样的。
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
mapper.insertStudent(student);
int studentId = student.getStudId();
有的数据库,如Oracle不能提供AUTO_INCREMENT列和我们需要使用SEQUENCE去形成主键。我们可以使用@Selectkey的注解去指定任何SQL的声明,而且可以作为主键的值。
@Insert(&INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,ADDR_ID, PHONE)
VALUES(#{studId},#{name},#{email},#{address.addrId},#{phone})&)
@SelectKey(statement=&SELECT STUD_ID_SEQ.NEXTVAL FROM DUAL&,
keyProperty=&studId&, resultType=int.class, before=true)
int insertStudent(Student student);
这里我们应用@SelectKey来生成主键的值,并且储蓄在Student的studId的属性中。因为我们定义了before=true,所以在插入时,就已经生成好了主键了。
如果你使用SEQUENCE的触发器来生成主键,我们可以从sequence_name.currval中获取主键,之后执行插入语句。
@Insert(&INSERT INTO STUDENTS(NAME,EMAIL,ADDR_ID, PHONE)
VALUES(#{name},#{email},#{address.addrId},#{phone})&)
@SelectKey(statement=&SELECT STUD_ID_SEQ.CURRVAL FROM DUAL&,
keyProperty=&studId&, resultType=int.class, before=false)
int insertStudent(Student student);
2. @Update
我们可以使用@Update注解来声明UPDATE。
@Update(&UPDATE STUDENTS SET NAME=#{name}, EMAIL=#{email},
PHONE=#{phone} WHERE STUD_ID=#{studId}&)
int updateStudent(Student student);
在updateStudent()的方法中,我们使用了@Update的注解,并且会返回受影响的行。
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
int noOfRowsUpdated = mapper.updateStudent(student);
3. @Delete
我们可以用@Delete来实现DELETE的声明。
@Delete(&DELETE FROM STUDENTS WHERE STUD_ID=#{studId}&)
int deleteStudent(int studId);
deleteStudent()的方法将会返回受影响的行。
4. @Select
我们可以使用@Select注解来实现SELECT的映射 。
package com.owen.mybatis.
public interface StudentMapper
@Select(&SELECT STUD_ID AS STUDID, NAME, EMAIL, PHONE FROM
STUDENTS WHERE STUD_ID=#{studId}&)
Student findStudentById(Integer studId);
为了匹配上Student对象的实例,我们使用studId作为stud_id的别名。如何返回有多个行的值,那么将会报TooManyResultException的错。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:126613次
积分:3847
积分:3847
排名:第7037名
原创:240篇
译文:26篇
评论:40条
文章:22篇
阅读:20866
文章:30篇
阅读:28434
(5)(4)(2)(5)(16)(27)(30)(39)(30)(71)(37)IDEA无法在service层用注解方式注入mapper
IDEA版本是14.1.2 mybatis插件版本是2.3.4
现在项目集成了mybatis,在业务类service层中用
&@Autowired 把mapper注入,实际运行时执行到该service报错,报mapper没有注入。(如果去掉@service和@Autowired &用传统的xml申明service并写入mapper属性不报错)
同样一份代码在eclipse上跑是没问题的,猜测是跟IDEA得编译有关,不知道哪位大神可以帮忙解惑,谢谢
这是在IDEA 14中的
在eclipse中就正常显示了
& IDEA14.1.2虽然是14的升级版,但也不可能会出现以上问题,你看提示很明显,你有导包莫?
--- 共有 4 条评论 ---
加油,风雨中,我们都是一线的战士,哈哈!
: 这个还得研究一下,现在的mapper都没有@Repository这个注解,加上之后不报错,但是页面使用的时候还是不行,eclipse就没有这个问题,我不会放弃的啦,正好给自己一些课题研究研究
那你使用基于注解的驱动,有手动加bean或者使用basicpackage-scan的策略嘛?IDEA是最好的Java集成环境,不要放弃它,因为高--大--上,哈哈!
妥妥导啦~同一份代码用eclipse启的正常运行啊
eclipse大法好
--- 共有 1 条评论 ---
用了3年的IDEA 不想就这么扔了
我的idea版本是14.1.1,集成mybatis的时候挺好的啊,你是不是哪个地方写的有问题?看报错好像是bean的配置出问题了。
--- 共有 4 条评论 ---
: 这个有写噢
只是排除掉了controller
你用了 , 就用spring去扫描目录, 这个所有用了这个annotation就会自动创建bean。把这个加到spring配置里:&context:component-scan base-package="your.service.dir"/&
还真是。。我这个service也是用@service注解申明的
xml文件里没做申明 是不是指这个service没有被spring管理起来?
在mapper接口上加上@Component就可以了,但是这样做对不对就不知道了,在我这里运行是正常的。
我这也出现这个问题,我把提示有红色改成黄色....
我觉得应该不会有此bug,eclipse没有报错是因为eclipse的安全监测机制没有IDEA好,这也是为什么现在越来越多的开发抛弃eclipse选择IDEA的原因。我也是用的Mybatis+spring ,IDEA14.1.3 &,请问你是不是少配置了DAO层的包扫描?
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
....配置mapper接口的包路径
你的问题,最好把代码完整发布到Github上面,给出地址。这样大家可以直接看代码进行调试。不然问题出错的环节实在太多了。
今天我也遇到你的问题了,我发现在Mapper接口文件中,加上
@Repository public interface UserMapper { 注解就好啦
--- 共有 1 条评论 ---
帮了我大忙了!!!谢谢.
这个和上面回答"对接口添加@Component注解"的答案都能解决, 但是这个@Repository注解更明确.
删除他即可,其实不一定要配置进来
--- 共有 1 条评论 ---
为什么可以不配置了?我也发现不配置也可以,但是好奇怪啊,那个类不交给spring,它怎么new出来的  使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通过表结构自动生成对应的java类及mapper文件,可以大大提高工作效率,并且它提供了很多自定义的设置可以应对不同的需求,最近做公司新开的一个项目就是使用到了它,简单粗暴.
  下面介绍详细的使用步骤和注意事项,我的项目环境是idea+maven+ssm,但是我新建了一个空的maven项目专门用来生成java代码,然后再把它有选择的copy到自己的项目环境中.
  1.新建一个空的webapp类型的maven项目.
  2.在pom.xml文件中加入mybatis-generator插件的配置:
&groupId&org.mybatis.generator&/groupId&
&artifactId&mybatis-generator-maven-plugin&/artifactId&
&version&1.3.2&/version&
&configuration&
&verbose&true&/verbose&
&overwrite&true&/overwrite&
&/configuration&
&/plugins&
  3.在resources包下新建一个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&
&!-- 指定数据库驱动的地址 这是我mac下的绝对路径--&
&classPathEntry location="/Users/wyg/personal/视频教程/generatorSqlmapCustom/lib/mysql-connector-java-5.1.28-bin.jar" /&
&!--一个数据库 对应一个context--&
context:生成一组对象的环境
id:必选,上下文id,用于在生成错误时提示
defaultModelType:指定生成对象的样式
1,conditional:类似hierarchical;
2,flat:所有内容(主键,blob)等全部生成在一个对象中;
3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class)
targetRuntime:
1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;
2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;
introspectedColumnImpl:类全限定名,用于扩展MBG
&context id="testTables" targetRuntime="MyBatis3"&
&commentGenerator&
&!-- 是否去除自动生成的注释 true:是 : false:否 --&
&property name="suppressAllComments" value="true" /&
&/commentGenerator&
&!--数据库连接的信息:驱动类、连接地址、用户名、密码 --&
&jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/shop" userId="root"
password="123"&
&/jdbcConnection&
&!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal --&
&javaTypeResolver&
&property name="forceBigDecimals" value="false" /&
&/javaTypeResolver&
&!-- targetProject:生成PO类的位置 --&
&javaModelGenerator targetPackage="com.ximalaya.shop.data1"
targetProject="src/main/java" &
&!-- enableSubPackages:是否让schema作为包的后缀 --&
&property name="enableSubPackages" value="false" /&
&!-- 从数据库返回的值被清理前后的空格 --&
&property name="trimStrings" value="true" /&
&/javaModelGenerator&
&!-- targetProject:mapper映射文件生成的位置 --&
&sqlMapGenerator targetPackage="com.ximalaya.shop.mapper1"
targetProject="src/main/java"&
&!-- enableSubPackages:是否让schema作为包的后缀 --&
&property name="enableSubPackages" value="false" /&
&/sqlMapGenerator&
&!-- targetPackage:mapper接口生成的位置 --&
&!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
&javaClientGenerator type="ANNOTATEDMAPPER"
targetPackage="com.ximalaya.shop.mapper1"
targetProject="src/main/java"&
&!-- enableSubPackages:是否让schema作为包的后缀 --&
&property name="enableSubPackages" value="false" /&
&/javaClientGenerator&
&!-- 指定数据库表 --&
&table schema="" tableName="tb_order"&
&property name="modelOnly" value="false"/&
&table schema="" tableName="tb_order_product"&
&property name="modelOnly" value="false"/&
&table schema="" tableName="tb_order_status"&
&property name="modelOnly" value="false"/&
&/context&
&/generatorConfiguration&
  这里需要注意的有两点,第一个就是配置好自己的数据库驱动,我本来将mysql-connector-java-5.1.28-bin.jar直接引入到项目中,然后就忽略了这个标签,但是运行失败,找不到数据库驱动,然后我加上该标签,指向文件中的mysql-connector-java-5.1.28-bin.jar的绝对路径,就好了.第二个就是javaClientGenerator标签里的type,在注释中有详细解释,这里可以根据你实际的需求生成不同类型的java代码.
  配置完之后,直接在当前项目下输入命令行:mvn mabatis-generator:generate,注意我的项目名称是shopTest所以在该目录下运行.
  如果能看到BUILD SUCCESS,那就证明操作成功了,去你指定的src目录下查看生成的代码即可.
阅读(...) 评论()15838人阅读
1、需要手动建表,如T_PRI_USER
2、新建配置文件generator.properties:
#工程src路径
project = E\:/java/eclipseVillage/icity-yuntv/src
#工程存放mapper.xml路径
resource = E\:/java/eclipseVillage/icity-yuntv/resource
#指定数据连接驱动jar地址
classPath=E:/java/eclipseVillage/icity-yuntv/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.11-bin.jar
jdbc_driver = com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://192.168.22.20:3306/icity_yuntv?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_user=root
jdbc_password=ffcsadmin
3、新建配置文件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&
&!-- 引入配置文件 --&
&properties resource=&generator.properties&/&
&!-- 指定数据连接驱动jar地址 --&
&classPathEntry location=&${classPath}& /&
&!-- 一个数据库一个context --&
&context id=&infoGuardian& targetRuntime=&MyBatis3&&
&!-- 注释 --&
&commentGenerator &
&property name=&suppressAllComments& value=&true&/&&!-- 是否取消注释 --&
&property name=&suppressDate& value=&true& /& &!-- 是否生成注释代时间戳--&
&/commentGenerator&
&!-- jdbc连接 --&
&jdbcConnection driverClass=&${jdbc_driver}&
connectionURL=&${jdbc_url}& userId=&${jdbc_user}&
password=&${jdbc_password}& /&
&!-- 类型转换 --&
&javaTypeResolver&
&!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) --&
&property name=&forceBigDecimals& value=&false&/&
&/javaTypeResolver&
&!-- 生成实体类地址 --&
&javaModelGenerator targetPackage=&cn.ffcs.yuntv.domain&
targetProject=&${project}& &
&!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain&, true:cn.ffcs.test.domain&.[schemaName] --&
&property name=&enableSubPackages& value=&false&/&
&!-- 是否针对string类型的字段在set的时候进行trim调用 --&
&property name=&trimStrings& value=&true&/&
&/javaModelGenerator&
&!-- 生成mapxml文件 --&
&sqlMapGenerator targetPackage=&mybatis&
targetProject=&${resource}& &
&!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain&, true:cn.ffcs.test.domain&.[schemaName] --&
&property name=&enableSubPackages& value=&false& /&
&/sqlMapGenerator&
&!-- 生成mapxml对应client,也就是接口dao --&
&javaClientGenerator targetPackage=&cn.ffcs.yuntv.dao&
targetProject=&${project}& type=&XMLMAPPER& &
&!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain&, true:cn.ffcs.test.domain&.[schemaName] --&
&property name=&enableSubPackages& value=&false& /&
&/javaClientGenerator&
&!-- 配置表信息,这里没生成一张表,这里需要改变一次对应表名 --&
&table schema=&icity_yuntv& tableName=&T_USER_ADDR&
domainObjectName=&UserAddr& enableCountByExample=&false&
enableDeleteByExample=&false& enableSelectByExample=&false&
enableUpdateByExample=&false&&
&!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample
是否生成 example类
&!-- 忽略列,不生成bean 字段
&ignoreColumn column=&FRED& /&--&
&!-- 指定列的java数据类型
&columnOverride column=&LONG_VARCHAR_FIELD& jdbcType=&VARCHAR& /&--&
&/context&
&/generatorConfiguration&
4、新建主类:
import java.io.F
import java.io.IOE
import java.util.ArrayL
import java.util.L
import org.mybatis.generator.api.MyBatisG
import org.mybatis.generator.config.C
import org.mybatis.generator.config.xml.ConfigurationP
import org.mybatis.generator.exception.XMLParserE
import org.mybatis.generator.internal.DefaultShellC
public class GeneratorMain {
public static void main(String[] args) {
List&String& warnings = new ArrayList&String&();
boolean overwrite =
//读取配置文件
File configFile = new File(&src/generatorConfig.xml&);
ConfigurationParser cp = new ConfigurationParser(warnings);
config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisG
myBatisGenerator = new MyBatisGenerator(config, callback,
warnings);
myBatisGenerator.generate(null);
//打印结果
for(String str : warnings){
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
5、导入jar包:
mysql-connector-java-5.1.11-bin.jar.jar 下载地址;http://download.csdn.net/detail/p87305
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:216393次
积分:1725
积分:1725
排名:千里之外
原创:19篇
转载:37篇
评论:27条
(2)(1)(2)(1)(1)(1)(1)(1)(15)(2)(2)(4)(4)(1)(4)(1)(1)(1)(5)(2)(3)(1)

我要回帖

更多关于 mapperscan注解 的文章

 

随机推荐