mybatis字段要更新为null ,要怎么处理啊

数据库一个字段要更新为null ,不能更新空串,字段为外键,要怎么处理啊!

2个回答

非必须的字段就别定义成外键

字段为外键,你要怎么更新啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mybatis 或 mybatis plus 查询返回null对象的问题怎么解决
查询条件字段 都为 null 的话 不会返回带字段的空对象,而是直接返回个null 例如 ``` @Select(" SELECT name,age FROM t_student WHERE id = #{id} ") List<Map<String,Object>> getList(String id); ``` ``` 假如有两条记录 第一条:name: null , age: null 第二条:name: bob, age: 11 ``` ### 返回的结果 ``` "data": { "student": [ null, { "name": bob, "age": "11" } ] } ``` ### 如何让结果变成以下格式: ``` "data": { "student": [ { "name": , "age": }, { "name": bob, "age": "11" } ] } ```
Mybatis3 Generator字段注释remarks读取为null
我用的数据库是SqlServer2012 在用Generator自动生成的时候,没有读取到字段的注释,而我数据库里面是有配置的,![图片说明](https://img-ask.csdn.net/upload/201612/03/1480737909_324995.png) 在网上找了一大圈,看到说如果读不到字段需要配置一下,但是只有Oracle和Mysql的,没有SqlServer的,实在搞不定了,求指点! ![图片说明](https://img-ask.csdn.net/upload/201612/03/1480738288_980077.png) 代码信息如下: ![图片说明](https://img-ask.csdn.net/upload/201612/03/1480738025_633227.png) ![图片说明](https://img-ask.csdn.net/upload/201612/03/1480738034_265737.png)
用springboot+mybatis取出数据contant字段总是显示null(查了一下午debug没找出来)
实现类 ``` public Page<Person> getNewPersonList( Integer currentPage, Integer pageSize) { // 实例化查询条件 final PersonExample personExample = new PersonExample(); PersonExample.Criteria criteria = personExample.createCriteria(); criteria.andIsDeleteEqualTo((byte)0); // 获取查询结果集 Page<Person> result = PageHelper.startPage(currentPage, pageSize).doSelectPage(new ISelect() { @Override public void doSelect() { // personRepository.selectByExample(personExample); personRepository.selectByExample(personExample); } }); return result; } ``` 其中返回值得实体类的代码: ``` package com.ebiz.code.repository.api.entity; import java.util.Date; public class Person { /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.id * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private Integer id; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.name * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String name; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.duty * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String duty; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.Email * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String email; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.phone * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String phone; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.place * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String place; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.is_delete * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private Byte isDelete; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.create_time * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private Date createTime; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.update_time * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private Date updateTime; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.photo * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String photo; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.type * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private Byte type; /** * * This field was generated by MyBatis Generator. * This field corresponds to the database column ebiz_person.contant * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ private String contant; /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.id * * @return the value of ebiz_person.id * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public Integer getId() { return id; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.id * * @param id the value for ebiz_person.id * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setId(Integer id) { this.id = id; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.name * * @return the value of ebiz_person.name * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getName() { return name; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.name * * @param name the value for ebiz_person.name * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setName(String name) { this.name = name; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.duty * * @return the value of ebiz_person.duty * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getDuty() { return duty; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.duty * * @param duty the value for ebiz_person.duty * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setDuty(String duty) { this.duty = duty; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.Email * * @return the value of ebiz_person.Email * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getEmail() { return email; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.Email * * @param email the value for ebiz_person.Email * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setEmail(String email) { this.email = email; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.phone * * @return the value of ebiz_person.phone * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getPhone() { return phone; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.phone * * @param phone the value for ebiz_person.phone * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setPhone(String phone) { this.phone = phone; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.place * * @return the value of ebiz_person.place * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getPlace() { return place; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.place * * @param place the value for ebiz_person.place * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setPlace(String place) { this.place = place; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.is_delete * * @return the value of ebiz_person.is_delete * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public Byte getIsDelete() { return isDelete; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.is_delete * * @param isDelete the value for ebiz_person.is_delete * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setIsDelete(Byte isDelete) { this.isDelete = isDelete; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.create_time * * @return the value of ebiz_person.create_time * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public Date getCreateTime() { return createTime; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.create_time * * @param createTime the value for ebiz_person.create_time * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setCreateTime(Date createTime) { this.createTime = createTime; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.update_time * * @return the value of ebiz_person.update_time * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public Date getUpdateTime() { return updateTime; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.update_time * * @param updateTime the value for ebiz_person.update_time * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.photo * * @return the value of ebiz_person.photo * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getPhoto() { return photo; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.photo * * @param photo the value for ebiz_person.photo * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setPhoto(String photo) { this.photo = photo; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.type * * @return the value of ebiz_person.type * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public Byte getType() { return type; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.type * * @param type the value for ebiz_person.type * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setType(Byte type) { this.type = type; } /** * This method was generated by MyBatis Generator. * This method returns the value of the database column ebiz_person.contant * * @return the value of ebiz_person.contant * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public String getContant() { return contant; } /** * This method was generated by MyBatis Generator. * This method sets the value of the database column ebiz_person.contant * * @param contant the value for ebiz_person.contant * * @mbg.generated Sat May 11 13:04:24 CST 2019 */ public void setContant(String contant) { this.contant = contant; } } ``` 数据库图字段没写错 ![图片说明](https://img-ask.csdn.net/upload/201905/11/1557568172_353594.png)
Mybatis如何动态修改查询结果?
需求是这样的:对查询数据库操作进行拦截,对不同权限的用户所返回的字段进行控制。 比如某个查询接口返回对象obj,obj里面有a,b,c三个字段。针对用户user1,可以将a,b,c三个字段全部返回。针对用户user2,只将a,b字段返回,c字段设置为null。 要求:用户的权限可在页面上调整,不同权限所返回的字段也可在页面做调整。调整后查询的结果也要相应变化,且无需修改代码或配置文件,也无需重启服务器。 目前进展: 使用mybatis拦截器拦截所有query操作,获取到返回对象obj。 public Object intercept(Invocation invocation) throws Throwable { Object obj = invocation.proceed(); return obj; } 目前问题: 无法判断obj的实际类型,也就无法强转类型修改里面的字段值。想过用instanceof判断,但使用instanceof时必须要知道你所要判断的类型。我建了一张表来存放类名、屏蔽字段、权限。
mysql中字段为text类型使用mybatis的Criteria查询无法进行封装
这是我的数据库 ``` tb_item_param CREATE TABLE `tb_item_param` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `item_cat_id` bigint(20) DEFAULT NULL COMMENT '商品类目ID', `param_data` text COMMENT '参数数据,格式为json格式', `created` datetime DEFAULT NULL, `updated` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `item_cat_id` (`item_cat_id`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COMMENT='商品规则参数' ``` 我的代码 ``` public void itemParamList(int page, int rows) { EUIDataGridResult result = new EUIDataGridResult(); TbItemParamExample example = new TbItemParamExample(); Criteria criteria = example.createCriteria(); criteria.andIdEqualTo((long)1); //PageHelper.startPage(page, rows); List<TbItemParam> list = itemParamMapper.selectByExample(example); TbItemParam tbItemParam = list.get(0); //TbItemParam itemParam = itemParamMapper.selectByPrimaryKey((long)1); System.out.println(tbItemParam.getParamData()); ``` 配置文件都是对的 查询出来的id什么都ok就是ParamData字段为null?TbItemParam pojo中ParamData字段是String类型,,为什么封装不进去? pojo与mapper都是逆向工程生成的代码。。
mybatis查询返回map的时候值为null的话map里就不会出来了?
好像数据库里字段是空值的话map里就不包含了,这个感觉不好,传到前台页面还以为这个值没取到,有什么办法可以让null值的也返回?总不能每个字段都用ifnull处理吧
mybatis查询结果字段与实体类中对应的字段名不相同
实体类 ``` package com.example.main.domain; import java.util.Date; public class User { private Integer MU_ID; private String MU_NO; private String MU_NAME; private Integer MI_ID; private Integer MR_ID; private String MU_PASSWORD; private String DEL_FLAG; private Date ADD_DATETIME; private String ADD_USER; private Date UPD_DATETIME; private String UPD_USER; private Date DEL_DATETIME; private String DEL_USER; public Integer getMU_ID() { return MU_ID; } public void setMU_ID(Integer MU_ID) { this.MU_ID = MU_ID; } public String getMU_NO() { return MU_NO; } public void setMU_NO(String MU_NO) { this.MU_NO = MU_NO; } public String getMU_NAME() { return MU_NAME; } public void setMU_NAME(String MU_NAME) { this.MU_NAME = MU_NAME; } public Integer getMI_ID() { return MI_ID; } public void setMI_ID(Integer MI_ID) { this.MI_ID = MI_ID; } public Integer getMR_ID() { return MR_ID; } public void setMR_ID(Integer MR_ID) { this.MR_ID = MR_ID; } public String getMU_PASSWORD() { return MU_PASSWORD; } public void setMU_PASSWORD(String MU_PASSWORD) { this.MU_PASSWORD = MU_PASSWORD; } public String getDEL_FLAG() { return DEL_FLAG; } public void setDEL_FLAG(String DEL_FLAG) { this.DEL_FLAG = DEL_FLAG; } public Date getADD_DATETIME() { return ADD_DATETIME; } public void setADD_DATETIME(Date ADD_DATETIME) { this.ADD_DATETIME = ADD_DATETIME; } public String getADD_USER() { return ADD_USER; } public void setADD_USER(String ADD_USER) { this.ADD_USER = ADD_USER; } public Date getUPD_DATETIME() { return UPD_DATETIME; } public void setUPD_DATETIME(Date UPD_DATETIME) { this.UPD_DATETIME = UPD_DATETIME; } public String getUPD_USER() { return UPD_USER; } public void setUPD_USER(String UPD_USER) { this.UPD_USER = UPD_USER; } public Date getDEL_DATETIME() { return DEL_DATETIME; } public void setDEL_DATETIME(Date DEL_DATETIME) { this.DEL_DATETIME = DEL_DATETIME; } public String getDEL_USER() { return DEL_USER; } public void setDEL_USER(String DEL_USER) { this.DEL_USER = DEL_USER; } } ``` 表的字段名 ![图片说明](https://img-ask.csdn.net/upload/201904/27/1556351780_468723.png) 查询出来的数据 [{"del_FLAG":"0","add_DATETIME":"2019-04-26T12:21:33.000+0000","mr_ID":1,"add_USER":"s","upd_DATETIME":"2019-04-03T12:21:50.000+0000","del_DATETIME":"2019-04-10T12:21:43.000+0000","upd_USER":"adad","del_USER":"dada","mu_PASSWORD":"123456","mu_ID":1,"mu_NO":"95927","mi_ID":1,"mu_NAME":"admin"},{"del_FLAG":"0","add_DATETIME":null,"mr_ID":1,"add_USER":null,"upd_DATETIME":null,"del_DATETIME":null,"upd_USER":null,"del_USER":null,"mu_PASSWORD":"123456","mu_ID":2,"mu_NO":"95544","mi_ID":1,"mu_NAME":"dada"}] 为什么下划线前面的字段会变成小写 有什么办法能变成大写吗
column "" can not be null springmvc+mybatis
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'userName' cannot be null ### The error may exist in com/demo/dao/UserMapper.xml ### The error may involve com.demo.dao.UserMapper.insertUser-Inline ### The error occurred while setting parameters ### SQL: insert into user (userName,password,id) values (?,?,?) ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'userName' cannot be null ; SQL []; Column 'userName' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'userName' cannot be null org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:927) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811) javax.servlet.http.HttpServlet.service(HttpServlet.java:624) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107 一直提示字段不能为空,这是因为没有接收到页面的请求参数吗?所以#{}接收不到值?怎样解决,求好心人搭救,感谢!
mybatis数据库模糊查询多字段语句问题
之前单表可以对表中数据进行连接字符串 现在连接多字段提示找不到o.delivery__name等字段 怎么办_ ```__ <select id="showorder" resultMap="BaseResultMap" parameterType="java.util.Map"> select o.*,g.goods_repertory,g.goods_code,g.goods_name,g.goods_standard,g.goods_master_name from qry_order as o left join cfg_goods as g on o.goods_coding=g.goods_coding <where> <if test="key != null and key != '' "> CONCAT(`o.delivery_name`,`o.order_lpn`,`o.order_remark`) LIKE CONCAT(CONCAT('%', #{key}),'%') </if> <if test="type == null or type == '' "> and o.order_type !=2 </if> <if test="type !=null and type != ''"> and o.order_type =#{type} </if> and order_create_time >adddate(now(), INTERVAL -6 HOUR) </where> <if test="sortName != null and sortName != '' "> order by o.${sortName} ${order} </if> limit #{offset},#{limit} </select> ```
mybatis中多表查询某张表的数据值为null,mysql中查询该表数据有,为啥?
我查了很多,有类似问题,尝试了他们的方法但是不行,我的不是因为数据库与实体类中的字段名不同。只事四表查询,其中一张表的数据出不来 直接上图 实体类(多张表的属性) ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566281796_739588.png) mysql中查询 ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566281827_127875.png) postman中测试 ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566281844_308663.png) 如果使用resultMap,里面的属性映射要怎么写,获取的有三张表的字段数据 ![图片说明](https://img-ask.csdn.net/upload/201908/20/1566288077_430734.png)
Spring+Mybatis 向oracle的Clob字段插入报错 在线等!
项目是使用Spring+SpringMVC+Mybatis构建的,使用JUnit4写了个测试类直接调用serivice层的update方法是可以成功插入,但是在Controler层调用service中的update方法就报错,下o: Cause: java.sql.SQLException: 数据大小超出此类型的最大值: 35845 ; uncategorized SQLException for SQL []; SQL state [null]; error code [17070]; 数据大小超出此类型的最大值: 35845; nested exception is java.sql.SQLException: 数据大小超出此类型的最大值: 35845 org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: 数据大小超出此类型的最大值: 35845 ### The error may involve com.ffcs.cq.repository.mybatis.work.BugMybatisDao.update-Inline ### The error occurred while setting parameter DETAIL=? WHERE DBID = ? ### Cause: java.sql.SQLException: 数据大小超出此类型的最大值: 3650 ; uncategorized SQLException for SQL []; SQL state [null]; error code [17070]; 数据大小超出此类型的最大值: 3650; nested exception is java.sql.SQLException: 数据大小超出此类型的最大值: 3650 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84) ~[spring-jdbc-4.0.5.RELEASE.jar:4.0.5.RELEASE] at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-4.0.5.RELEASE.jar:4.0.5.RELEASE] at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-4.0.5.RELEASE.jar:4.0.5.RELEASE] at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73) ~[mybatis-spring-1.2.2.jar:1.2.2] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371) ~[mybatis-spring-1.2.2.jar:1.2.2] at com.sun.proxy.$Proxy18.update(Unknown Source) ~[na:na] at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:254) ~[mybatis-spring-1.2.2.jar:1.2.2] at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:54) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52) ~[mybatis-3.2.8.jar:3.2.8] at com.sun.proxy.$Proxy35.update(Unknown Source) ~[na:na] at com.ffcs.cq.service.work.BugService.modify(BugService.java:395) ~[BugService.class:na] at com.ffcs.cq.service.work.BugService$$FastClassBySpringCGLIB$$83194116.invoke(<generated>) ~[spring-core-4.0.5.RELEASE.jar:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.0.5.RELEASE.jar:4.0.5.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) ~[spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
oracle设置自动增长id,mybatis如何插入数据?
我的mybatis的xml mapper文件语句如下: ``` <insert id="insertFlights" parameterType="com.entity.Flights" useGeneratedKeys="true" keyProperty="id"> insert into FLIGHTS(ID,FLIGHT_CODE,FLIGHT_DATE,AIRLINE,TYPE,TAKE_AIRPORT_ID,LANDING_AIRPORT_ID,TAKE_TIME,LANDING_TIME,FLIGHT_TIME,STOP_AIRPORT,REFERENCE_PRICE) values(#{id},#{flightCode},#{flightDate},#{airline},#{type},#{takeAirportId},#{landingAirportId},#{takeTime},#{landingTime},#{flightTime},#{stopAirport},#{referencePrice}) </insert> ``` 报的异常如下: ``` org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='id', mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111 ``` 如果我把xml mapper里的语句去掉id字段;则报异常如下: ``` org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column #1 from result set. Cause: java.sql.SQLException: 请求的转换无效 ``` 请问应该怎么处理?
mybatis3 mysql数据库管理系统的自动递增字段 如何获取
我测试了很多种配置方法都不能实现 1.我的数据库是mysql 配置insert语句 <insert id="addUser" parameterType="org.springframework.samples.domain.User" useGeneratedKeys="true" keyProperty="id" > insert into users (id,name,rdate,age) values (#{id},#{name},#{rdate,jdbcType=INTEGER},#{age}) </insert> 用mybatis执行 userDao.addUser(user)后 为什么user.getId还是为空 2.我的数据库是mysql 配置insert语句 <insert id="addUser" parameterType="org.springframework.samples.domain.User"> insert into users (id,name,rdate,age) values (#{id},#{name},#{rdate,jdbcType=INTEGER},#{age}) <selectKey keyProperty="id" resultType="long" order="AFTER"> SELECT @@IDENTITY AS id 或者 SELECT LAST_INSERT_ID() </selectKey> </insert> 用mybatis执行 userDao.addUser(user)后,为什么user.getId还是为空 并且SELECT @@IDENTITY AS id 或者 SELECT LAST_INSERT_ID() 没有被执行。 如何设置为 order="BEFORE" 会执行,但是会包主键重复 日志如下 [DEBUG][2012-03-08 14:14:17,924][java.sql.Connection]ooo Connection Opened [DEBUG][2012-03-08 14:14:17,955][org.mybatis.spring.SqlSessionUtils]Registering transaction synchronization for SqlSession [DEBUG][2012-03-08 14:14:18,127][jdbc.audit]2. PreparedStatement.new PreparedStatement returned org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:255) [DEBUG][2012-03-08 14:14:18,127][jdbc.audit]2. Connection.prepareStatement(insert into users (id,name,rdate,age) values (?,?,?,?)) returned net.sf.log4jdbc.PreparedStatementSpy@857066 org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:255) [DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setQueryTimeout(25000) returned org.apache.commons.dbcp.DelegatingStatement.setQueryTimeout(DelegatingStatement.java:249) [DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setNull(1, 1111) returned org.apache.commons.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:105) [DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setString(2, "2") returned org.apache.commons.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:132) [DEBUG][2012-03-08 14:14:18,158][jdbc.audit]2. PreparedStatement.setLong(3, 1331187257) returned org.apache.commons.dbcp.DelegatingPreparedStatement.setLong(DelegatingPreparedStatement.java:120) [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.setInt(4, 1) returned org.apache.commons.dbcp.DelegatingPreparedStatement.setInt(DelegatingPreparedStatement.java:117) [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.addBatch() returned org.apache.commons.dbcp.DelegatingPreparedStatement.addBatch(DelegatingPreparedStatement.java:172) -2147482646 null [DEBUG][2012-03-08 14:14:18,174][org.springframework.jdbc.datasource.DataSourceTransactionManager]Initiating transaction commit [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. Connection.isClosed() returned false org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:95) [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. Connection.getMetaData() returned com.mysql.jdbc.DatabaseMetaData@fb1135 org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:99) [DEBUG][2012-03-08 14:14:18,174][org.springframework.jdbc.datasource.DataSourceTransactionManager]Committing JDBC transaction on Connection [jdbc:mysql://127.0.0.1:3306/sdsp?useUnicode=true&characterEncoding=utf-8, UserName=root@localhost, MySQL-AB JDBC Driver] [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. Connection.commit() returned org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:308) [DEBUG][2012-03-08 14:14:18,174][jdbc.sqlonly] org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297) 2. batching 1 statements: 1: insert into users (id,name,rdate,age) values (NULL,'2',1331187257,1) [DEBUG][2012-03-08 14:14:18,174][jdbc.sqltiming] org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297) 2. batching 1 statements: 1: insert into users (id,name,rdate,age) values (NULL,'2',1331187257,1) {executed in 0 msec} [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.executeBatch() returned [I@1e3e7d2 org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297) [DEBUG][2012-03-08 14:14:18,174][jdbc.audit]2. PreparedStatement.close() returned org.apache.commons.dbcp.DelegatingStatement.close(DelegatingStatement.java:168) [DEBUG][2012-03-08 14:14:18,190][org.mybatis.spring.SqlSessionUtils]Transaction synchronization committed SqlSession [DEBUG][2012-03-08 14:14:18,190][org.mybatis.spring.SqlSessionUtils]Transaction synchronization closed SqlSession [DEBUG][2012-03-08 14:14:18,440][jdbc.audit]2. Connection.setAutoCommit(true) returned org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:338) [DEBUG][2012-03-08 14:14:18,440][jdbc.audit]2. Connection.isReadOnly() returned false org.apache.commons.dbcp.DelegatingConnection.isReadOnly(DelegatingConnection.java:329) [DEBUG][2012-03-08 14:14:18,440][jdbc.audit]2. Connection.isClosed() returned false org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:95) [DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.getMetaData() returned com.mysql.jdbc.DatabaseMetaData@1a81bd5 org.apache.commons.dbcp.DelegatingConnection.toString(DelegatingConnection.java:99) [DEBUG][2012-03-08 14:14:18,455][org.springframework.jdbc.datasource.DataSourceTransactionManager]Releasing JDBC Connection [jdbc:mysql://127.0.0.1:3306/sdsp?useUnicode=true&characterEncoding=utf-8, UserName=root@localhost, MySQL-AB JDBC Driver] after transaction [DEBUG][2012-03-08 14:14:18,455][org.springframework.jdbc.datasource.DataSourceUtils]Returning JDBC Connection to DataSource [DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.isClosed() returned false org.apache.commons.dbcp.DelegatingConnection.isClosed(DelegatingConnection.java:353) [DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.getAutoCommit() returned true org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:311) [DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.clearWarnings() returned org.apache.commons.dbcp.DelegatingConnection.clearWarnings(DelegatingConnection.java:305) [DEBUG][2012-03-08 14:14:18,455][jdbc.audit]2. Connection.getAutoCommit() returned true org.apache.commons.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:311) [DEBUG][2012-03-08 14:14:18,502][org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor]Written [Hello world! ] as "text/html" using [org.springframework.http.converter.StringHttpMessageConverter@14a616]
用mybatis-plus取出mysql的datetime类型的值怎么赋给joda的Datetime
在代码中我使用了joda的datetime类,发现做查询的时候,该字段无法映射,得到Null。
mybatis 参数接收问题
![图片说明](https://img-ask.csdn.net/upload/201507/16/1437007947_794387.png) 传的参数 Map<String, Object> map=new HashMap<String, Object>(); map.put("userId", userId); map.put("shopIdList", shopIdList); map.put("goodsIdList", goodsIdList); 错误(肯定不是字段问题) org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #2 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 无效的列类型: 1111; nested exception is java.sql.SQLException: 无效的列类型: 1111 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:365) at com.sun.proxy.$Proxy12.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:195) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:120) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:90) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40) at com.sun.proxy.$Proxy22.selectPersonCouponUseForOrder(Unknown Source) at com.dmsc.web.base.service.discountcoupon.DiscountCouponService.queryPersonCouponUseForOrder(DiscountCouponService.java:1114) at com.dmsc.web.base.service.discountcoupon.DiscountCouponService$$FastClassByCGLIB$$8a9b463b.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:618) at com.dmsc.web.base.service.discountcoupon.DiscountCouponService$$EnhancerByCGLIB$$1f0061d0.queryPersonCouponUseForOrder(<generated>) at com.dmsc.web.base.service.activity.DiscountCouponServiceTest.shiyong(DiscountCouponServiceTest.java:64) at com.dmsc.web.base.service.activity.DiscountCouponServiceTest.testaddBuffer(DiscountCouponServiceTest.java:57) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.sql.SQLException: 无效的列类型: 1111 at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3900) at oracle.jdbc.driver.OraclePreparedStatement.setNullCritical(OraclePreparedStatement.java:4406) at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:4388) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setNull(OraclePreparedStatementWrapper.java:1281) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:66) at com.sun.proxy.$Proxy35.setNull(Unknown Source) at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:39) at org.apache.ibatis.executor.parameter.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:91) at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:83) at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:58) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) at com.sun.proxy.$Proxy33.parameterize(Unknown Source) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:71) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:56) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:141) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:98) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:73) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:101) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:95) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355) ... 42 more
Spring3整合Mybatis3+mybatis-spring1.x查询报错
我在进行Spring(V:3.2.3.RELEASE)+mybatis(V:3.2.4)+mybatis-spring(V:1.1.1)整合。有一个ClassRoom班级类: //班级id private int classId; //班级编码 private String classCode; //班级名字 private String className; //所属学院 private College college; //标记 private int flag; 学院类College属性是: private int collegeId; private String collegeCode; private String collegeName; private int flag; ClassRoomMapper.xml配置如下: <resultMap type="com.yao.model.ClassRoom" id="ClassRoomMap"> <id column="class_id" property="classId"/> <result column="class_code" property="classCode"/> <result column="class_name" property="className"/> <result column="class_flag" property="flag"/> <!-- <association property="college" javaType="com.yao.model.College" column="college" select="com.yao.dao.CollegeDao.loadByCode" /> --> <association property="college" javaType="com.yao.model.College"> <id column="college_id" property="collegeId"/> <result column="college_code" property="collegeCode"/> <result column="college_name" property="collegeName"/> <result column="college_flag" property="flag"/> </association> </resultMap> 查询班级信息语句如下: <select id="loadByCode" resultMap="ClassRoomMap"> select t.class_id, t.class_code,t.class_name, t.flag as 'class_flag',t2.college_code, t2.college_id, t2.college_name, t2.flag as 'college_flag' from t_class t left join t_college t2 on t.college =t2.college_code where t.class_code = #{classCode} </select> beans.xml中配置ClassDao如下: <bean id="classRoomDao" class="org.mybatis.spring.mapper.MapperScannerConfigurer" scope="prototype"> <property name="mapperInterface" value="com.yao.dao.ClassRoomDao"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> 在进行查询(loadByCode) 的时候报错如下: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'classRoomDao' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sqlSessionFactory' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalStateException: Type handler was null on parameter mapping for property 'college'. It was either not specified and/or could not be found for the javaType / jdbcType combination specified. 请问这是什么原因呢?还需要重新写college与数据库字段对应的关系吗?我已经在association中增加了对应字段的配置。
关于mybatis的动态sql问题
就是在mybatis中我想写一条sql查询两种列表 想通过参数控制,想问一下查询的字段可不可以通过前台传入的参数进行if标签判断如: ``` select <if test="timeState !=null and timeState='month'"> to_char(trunc(co.CREATE_TIME),'yyyy-mm-dd') as createTime, <if test="timeState !=null and timeState='year'"> to_char(trunc(co.CREATE_TIME),'yyyy-mm') as createTime, </if> ``` 这样行吗?我现在写他是报,每个查询块只允许有一个子句
请教spring 3+mybatis整合出错问题
spring 3+mybatis3+spring security整合,我的包和层次结构如下:采用的是按照模块分层, 每层有dao,sevrice,web三个目录,所有的实体类放在model文件夹中 security包中,有dao,service,web三个目录,其中 SecurityDao.java @MyBatisDao public interface SecurityDao extends BaseMapper<Security> { // 获得群组usergroups对应的权限 public List<Security> getGroupResources(); } SecurityService.java接口 ``` public interface SecurityService extends BaseService<Security> { public List<Security> getGroupResources(); } ``` SecurityServiceImpl .java @Service(value = "securityService") public class SecurityServiceImpl implements SecurityService { @Autowired private SecurityDao securityDao; // 获得群组usergroups对应的权限 public List<Security> getGroupResources() { return securityDao.getGroupResources(); } } MyBatisDao.java ``` /** * 标识MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。 * */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Component public @interface MyBatisDao { /** * The value may indicate a suggestion for a logical component name, * to be turned into a Spring bean in case of an autodetected component. * @return the suggested component name, if any */ String value() default ""; } ``` 然后系统有一个model的包,存放各模块的实体类这里有security.java,get/set就省略 了, 然后在maven的resource下建立文件src\resource\mappings\modules\security\SecurityDao.xml ``` <mapper namespace="com.liao.modules.core.security.dao.SecurityDao"> <resultMap id="getUserInfoMap" type="Security"> <result property="userid" column="userid"/> <result property="username" column="username"/> <result property="password" column="password"/> <result property="enabled" column="enabled"/> </resultMap> <select id="getGroupResources" resultType="Security"> select g.role_name roleName,a.url resourceValue from usergroups g join groupauthority_mapping ga on g.groupid=ga.groupid join authority a on ga.authorityid=a.authorityid </select> ``` spring-mvc.xml: ``` <!-- 自动扫描bean,把作了注解的类转换为bean --> <context:component-scan base-package="com.liao" > <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> ``` 其他mvc配置省略 spring-context-application.xml: ``` <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动匹配Mapper映射文件 --> <property name="mapperLocations" value="classpath:mappings/**/*.xml"/> <property name="typeAliasesPackage" value="com.liao.model"/> <property name="configLocation" value="classpath:/mybatis-config.xml"></property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.liao" /> <property name="annotationClass" value="com.itownet.isms.core.annotation.MyBatisDao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <!-- 事务配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> ``` mybatis-config.xml: ``` <configuration> <!-- 全局参数 --> <settings> <!-- 使全局的映射器启用或禁用缓存。 --> <setting name="cacheEnabled" value="true"/> <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 --> <setting name="aggressiveLazyLoading" value="true"/> <!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true --> <setting name="multipleResultSetsEnabled" value="true"/> <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true --> <setting name="useColumnLabel" value="true"/> <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false --> <setting name="useGeneratedKeys" value="false"/> <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 --> <setting name="autoMappingBehavior" value="PARTIAL"/> <!-- 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) --> <setting name="defaultExecutorType" value="SIMPLE"/> <!-- 使用驼峰命名法转换字段。 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session --> <setting name="localCacheScope" value="SESSION"/> <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 --> <setting name="jdbcTypeForNull" value="NULL"/> </settings> ``` 在spring secrutiy中,调用 ``` public class DefinitionSourceFactoryBean implements FilterInvocationSecurityMetadataSource { @Autowired private SecurityService securityService; public void findResources() { List<Security> resourcesgroup = securityService.getGroupResources(); } } ``` 这个时候在运行securityService.getGroupResources();,说: mybatis,Invalid bound statement (not found): com.liao.core.security.dao.SecurityDao.getGroupResources 编译后,已经检查过,maoper.xml在web-inf\classes目录下了,为什么呢?
spring+mybatis事物配置的问题
昨天遇到一个有关事物方面的问题,请大家帮忙看看,问题出在了什么地方,谢谢! 具体问题描述:根据B表同步A表的数据,结果service方法返回后B表的数据已处理标志没有更新,程序在第二次同步数据时B表的数据才能更新。具体情况见下面代码的注释。 事物配置文件: > <tx:advice id="txAdvice" transaction-manager="transactionManager"> > <tx:attributes> <tx:method name="*" read-only="true" /> > <tx:method name="add*" propagation="REQUIRED" > rollback-for="java.lang.Exception" /> <tx:method name="save*" > propagation="REQUIRED" rollback-for="java.lang.Exception" /> > <tx:method name="modify*" propagation="REQUIRED" > rollback-for="java.lang.Exception" /> <tx:method name="update*" > propagation="REQUIRED" rollback-for="java.lang.Exception" /> > <tx:method name="delete*" propagation="REQUIRED" > rollback-for="java.lang.Exception" /> <tx:method name="syn*" > propagation="REQUIRED" rollback-for="java.lang.Exception" /> > </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.mdc.jiangsu114weixinServer.service..*.*(..))" id="transactionPointCut" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointCut" /> </aop:config> service中的方法: public List<MerchantSyn> getPageData(Page page){ List<MerchantSyn> list =this.merchantSynMapper.merchantsynInfoListPage(page); return list; } public void synchronizeMerchant(MerchantSyn merchantSyn) { //判断A表是否有数据,如果有则更新,没有则插入数据 int count = merchantSynMapper.getMerchantCount(merchantSyn); if(count>0){ merchantSynMapper.updateMerchantData(merchantSyn); }else{ merchantSynMapper.insertMerchantData(merchantSyn); } //更新B表的数据 //该方法第一次执行完时,下面的语句没有把表中的数据SynFlag更新, //但,第二次该方法执行完时,下面的语句把数据库中的字段SynFlag更新了 merchantSyn.setSynFlag("1"); merchantSynMapper.updateMerchantSynDealFlag(merchantSyn); } controller中调用service中的方法: Page page = new Page(); page.setCurrentPage(1); page.setPageSize(20); page.setEntityOrField(true); //只有一条测试数据 List<MerchantSyn> list = this.merchantSynService.getPageData(page); if(list!=null && list.size()>0){ while(list.size()>0){ for(int i=0;i<list.size();i++){ this.merchantSynService.synchronizeMerchant(list.get(i)); } //由于第一次SynFlag没有更新,所以下面的语句还会查询到数据,即会进行第二次调用方法synchronizeMerchant(..); list = this.merchantSynService.getPageData(page); if(list==null || list.size()<=0){ break; } } }
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问