IBatis插入一条记录后,如何返回记录ID值

下面是IBatis将用户插入数据库的例子:

  1. MySQL定义
    CREATE TABLE user (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    name char(80) NOT NULL,
    age int(11) DEFAULT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY id (id)
    )

  2. User定义
    public class User {
    private Long id;
    private String name;
    private int age;
    ...
    }

  3. 定义UserMapper
    [code="java"]

    insert into author(name,age) values(#{name},#{age})

    [/code]

  4. 增加一个用户的程序片段
    [code] ApplicationContext aContext = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
    UserMapper userMapper = aContext.getBean(UserMapper.class);
    User user = new User();

    user.setName("张三");
    user.setAge(18);
    userMapper.insert(user);[/code]
    问题:如何才能得到加入记录"张三"的ID值? 能在插入时直接回填ID吗?

3个回答

纠正一下1楼的说法,返回值是2楼SQL-Map中要加上的 @@IDENTITY
把它强转为String或int都可以,下面是int的写法:

[code="java"]
public int insert(User user) throws DAOException {
return ((Integer)getSqlMapClientTemplate().insert("insert", user)).intValue();
}
[/code]

UserMapper 里调用的如果是 iBatis 的 insert 方法的话,

insert方法的返回值本身就是Object,其实就是写进去的对象

把这个返回值强转为 User,就是啦,不光id,name也有。





insert into author(name,age)
values(#{name},#{age})


SELECT @@IDENTITY AS ID



Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ibatis 中向oracle 表插入一条记录

SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!-- Configure a built-in transaction manager. If you're using an app server, you probably want to use its transaction manager and a managed datasource --> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@100.1.1.13:1521:testnew"/> <property name="JDBC.Username" value="usert"/> <property name="JDBC.Password" value="usert"/> </dataSource> </transactionManager> <!-- List the SQL Map XML files. They can be loaded from the classpath, as they are here (com.domain.data...) --> <sqlMap resource="com/xlh/ibatis/User.xml"/> <!-- List more here... <sqlMap resource="com/mydomain/data/Order.xml"/> <sqlMap resource="com/mydomain/data/Documents.xml"/> --> </sqlMapConfig> User.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <!-- Use type aliases to avoid typing the full classname every time. --> <typeAlias alias="UserT" type="com.xlh.ibatis.model.User"/> <!-- Result maps describe the mapping between the columns returned from a query, and the class properties. A result map isn't necessary if the columns (or aliases) match to the properties exactly. --> <resultMap id="UserResult" class="UserT"> <result property="id" column="id"/> <result property="name" column="name"/> </resultMap> <!-- Select with no parameters using the result map for Account class. --> <select id="selectAllAccounts" resultMap="UserResult"> select * from UserT </select> <insert id="insertAccount" parameterClass="UserT"> insert into UserT ( id,name values ( #id#,#name# ) </insert> </sqlMap> User.java package com.xlh.ibatis.model; public class User { private int id ; private String name ; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package com.xlh.ibatis; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.xlh.ibatis.model.User; public class testIbatis { /** * @param args */ private static SqlMapClient sqlMapper ; static { try { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e); } } public static void main(String[] args) { // TODO Auto-generated method stub insert() ; select() ; } public static void select() { try { List list = sqlMapper.queryForList("selectAllAccounts"); Iterator it = list.iterator() ; while (it.hasNext()) { User user = (User)it.next() ; System.out.println(user.getName()) ; System.out.println(user.getId()) ; } } catch (SQLException e) { e.printStackTrace(); } } public static void insert() { User user = new User() ; user.setId(2) ; user.setName("laogao") ; //插入一条记录 try { sqlMapper.insert("insertAccount", user) ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 执行主函数时出现 com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in com/xlh/ibatis/User.xml. --- The error occurred while applying a parameter map. --- Check the insertAccount-InlineParameterMap. --- Check the statement (update failed). --- Cause: java.sql.SQLException: ORA-00917: 缺少逗号 at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:91) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:447) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImpl.java:59) at com.xlh.ibatis.testIbatis.insert(testIbatis.java:62) at com.xlh.ibatis.testIbatis.main(testIbatis.java:33) Caused by: java.sql.SQLException: ORA-00917: 缺少逗号 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java) at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java) at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java) at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:81) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:200) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78) ... 5 more aaa 1 请问哪儿出问题了. 我刚接触ibatis

[ibatis3]insert一条记录,ID增加了,但是没有数据

问题描述: insert一条记录,发现发挥值都是正常的,并且将语句打印出来入下: [code="java"] 1031 DEBUG [http-8080-1] java.sql.Connection - ooo Connection Opened 1250 DEBUG [http-8080-1] org.logicalcobwebs.proxool.ProxyFactory - Implementing interface java.sql.Statement 1250 DEBUG [http-8080-1] org.logicalcobwebs.proxool.ProxyFactory - Implementing interface com.mysql.jdbc.Statement 1250 DEBUG [http-8080-1] org.logicalcobwebs.proxool.ProxyFactory - Implementing interface java.sql.PreparedStatement 1250 DEBUG [http-8080-1] org.logicalcobwebs.proxool.ProxyFactory - Implementing interface java.sql.Wrapper 1359 DEBUG [http-8080-1] java.sql.PreparedStatement - ==> Executing: insert into Post_Info( title, content, type, stime, contact )values( ?, ?, ?, ?, ? ) 1359 DEBUG [http-8080-1] java.sql.PreparedStatement - ==> Parameters: 为什么数据就是不出来(String), 为什么数据就是不出来为什么数据就是不出来为什么数据就是不出来(String), 1(Integer), 2010-01-02 21:05:04(String), 12121212(String) 1406 DEBUG [http-8080-1] java.sql.Connection - xxx Connection Closed [/code] 这条记录显示执行成功了,而且把这个sql语句单独拿出来放查询分析器能看见数据库里面的数据,而这样执行就会出现执行成功但是数据库里面没有数据,而且自增的id值增加了(下次手动插入数据的时候发现id刚才增加了,但没数据)。

oracle自增字段的插入问题

在oracle数据库中,有表A(id NUMBER(16),name VARCHAR2(100)),就是两个字段,都不允许为空,其中id这个字段是连续自增的。现在我想直接插入一条数据,通过oracle客户端执行sql语句来实现。 例如 [color=blue]insert into A(id,name) select max(id),'jack' from A[/color] 我上面的语句是不正确的,最终的效果就是插入的这条数据,id比上一条增加1,name字段可以自己定义,哪位高手麻烦指点下。

IBATIS像mysql中批量新增问题

这是ibatis sqlmap中的 sql <insert id="updateCredit" parameterClass="com.spci.po.MemberMerchant"> <![CDATA[ insert INTO t_member_credit (ID,MEMBER_ID,TRADE_ID,BALANCE) VALUES (#id#,#memberId#,#tradeId#,#balance#) ON DUPLICATE KEY UPDATE BALANCE=#balance# ]]> </insert> 这是DAO种的执行代码 public void bathInsertObject(final String sql, final List list) { try { //this.getSqlMapClient().startTransaction(); this.getSqlMapClient().startBatch(); for (int i = 0; i < list.size(); i++) { this.insertObject(sql, list.get(i)); } //this.getSqlMapClient().commitTransaction(); //this.getSqlMapClient().endTransaction(); this.getSqlMapClient().executeBatch(); } catch (SQLException e) { logger.error("批量添加错误"+sql,e); } } 目的:为了实现mysql中存在数据就批量新增 不存在就批量更新,上面的sql已经在数据库中执行sql验证可用 结果:通过Ibatis调用后 只新增了一条数据,而不是多条 PS:在执行普通的批量新增时 上面的代码是可用的 请问哪里出错了?如何解决

mysql用主键查询出两条相同的记录

``` SELECT a.id, a.user_id AS userId, a.content, a.status, a.create_time AS createTime, a.address, a.type, a.people_count AS peopleCount, a.fee_content AS feeContent, a.active_time AS activeTime, a.condition, a.pic, a.join_count, c.avatars AS initiatorAvatars, c.phone AS initiatorPhone, c.name As initiatorName FROM t_active a LEFT JOIN t_join_active b ON a.id = b.active_id LEFT JOIN t_user c ON a.user_id=c.id WHERE a.id=? ``` id是主键查询出两条相同的记录。 org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2 报了这个错。 sql复制到数据库中查询,只有一条。请教是什么问题 ![图片说明](https://img-ask.csdn.net/upload/201904/17/1555503750_459867.png)

Mybatis查询Oracle数据库结果为null,但数据库中存在该条记录

最近学习mybatis时遇到问题,相关配置应该是正确的,用mysql查询也能返回结果,但是将数据源切换到Oracle时总是返回null,求教。mybatis查询日志如下: ``` Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Created connection 174573182. Returned connection 174573182 to pool. Opening JDBC Connection Checked out connection 174573182 from pool. Setting autocommit to false on JDBC Connection [oracle.jdbc.driver.T4CConnection@a67c67e] ==> Preparing: SELECT ID id, LAST_NAME lastName, GENDER gender, EMAIL email FROM mybatis_employee WHERE ID = ? ==> Parameters: 1(Integer) <== Total: 0 null Resetting autocommit to true on JDBC Connection [oracle.jdbc.driver.T4CConnection@a67c67e] Closing JDBC Connection [oracle.jdbc.driver.T4CConnection@a67c67e] Returned connection 174573182 to pool. ``` 但是,将mybatis发送的SQL复制到数据中直接查询也能查询到该记录。mybatis能返回null,可以说明Oracle数据库连接应该是没问题的,应该是结果的包装出了问题,相关代码描述如下文,求赐教。 Oracle中mybatis\_employee表定义如下: ```SQL ID INTEGER LAST\_NAME VARCHAR2(255) Y GENDER INTEGER Y EMAIL VARCHAR2(255) Y ``` mybatis对应的查询配置如下: ```xml <select id="getEmployeeById" resultType="cn.seu.edu.Mybatis.bean.Employee" databaseId="oracle"> SELECT ID id, LAST_NAME lastName, GENDER gender, EMAIL email FROM mybatis_employee WHERE ID = #{id} </select> ``` 测试代码如下: ```java public void testEmployeeMapper() throws IOException{ // 创建SqlSessionFactory对象 InputStream inputStream = Resources.getResourceAsStream("conf/mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 创建session SqlSession sqlSession = sqlSessionFactory.openSession(); Assert.assertNotNull(sqlSession); try { // 获取接口的实现类对象 // Mybatis会为接口实现一个代理对象,由代理对象执行sql EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class); // 调用接口的方法 Employee employee = employeeMapper.getEmployeeById(1); System.out.println(employee); } finally { sqlSession.close(); } } ``` Employee类定义如下 ```java private Integer id; private String lastName; private Integer gender; private String email; 以下省略setter和getter ```

请问使用JdbcTemplate新增数据如何获得改数据的自增id?

请问使用JdbcTemplate做insert操作的时候。该表的主键为自增。我需要改条数据的id作为外键进行其他操作。用update的方法好像不能返回插入的对象。请问如何获得改id。 ps:请别说hibernate与ibatis。

sql如何向两张表中同时添加数据?

Ibatis ,sql ,有两张表A(Aid,name,age,gender),B(Bid,address,phone),实体类属性User{id,name,age,gender,address,phone},现在传来一条包含User类所有属性的数据,如何同时分别插入到A表和B表中?

Mysql 在A表新增一条数据时,B表的b字段会根据A表的a字段的值增加或减小

用ibatis和mysql,用excel导入表格A时, A表有一个字段a每月还款额,B表有一个字段b总金额。_两个表根据peopleid关联_。 在A表插入一行新的数据,对应的B表的 某条数据 的字段b总金额发生更新变化。 请问在Action中或sql语句要如何实现这个功能

关于java新增数据的时候外键id为空

![这是action里面的set的外键id](https://img-ask.csdn.net/upload/201712/06/1512520294_614821.png) ![这个是新增以后页面显示的为空](https://img-ask.csdn.net/upload/201712/06/1512520335_778850.png)

一个事务里面执行两个insert 语句 只有后面一个insert 被commit,请问大神怎么回事?

org.mybatis.spring.SqlSessionUtils 97 getSqlSession - Creating a new SqlSession org.mybatis.spring.SqlSessionUtils 128 registerSessionHolder - Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.transaction.SpringManagedTransaction 87 openConnection - JDBC Connection [1784195322, URL=jdbc:sqlserver://192.168.11.2:11433;authentication=NotSpecified;authenticationScheme=nativeAuthentication;xopenStates=false;sendTimeAsDatetime=true;trustServerCertificate=false;TransparentNetworkIPResolution=true;serverNameAsACE=false;sendStringParametersAsUnicode=true;selectMethod=direct;responseBuffering=adaptive;packetSize=8000;multiSubnetFailover=false;loginTimeout=15;lockTimeout=-1;lastUpdateCount=true;encrypt=false;disableStatementPooling=true;databaseName=zyscm;columnEncryptionSetting=Disabled;applicationName=Microsoft JDBC Driver for SQL Server;applicationIntent=readwrite;, UserName=sa, Microsoft JDBC Driver 6.0 for SQL Server] will be managed by Spring org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Preparing: {call P_SYS_GET_FNO (?,?)} org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Parameters: PI(String) org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils 163 sessionHolder - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] from current transaction org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils 163 sessionHolder - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] from current transaction org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Preparing: {call P_SYS_GET_FID (?)} org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Parameters: org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils 163 sessionHolder - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] from current transaction org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Preparing: INSERT INTO T_IM_PURINMT(FID,FNUMBER,FDATE,FSALEMANID,FSTATUS,FREMARK,FCREATEUSERID,FLASTUPDATEUSERID) (SELECT ?,?,?,?,?,?,?,?) org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Parameters: 90000000000096(String), PI0000000095(String), 2019-07-10(String), U2NQUFIMMSK(String), 1(String), 4444(String), U2NQUFIMMSK(String), U2NQUFIMMSK(String) org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - <== Updates: 1 org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils 163 sessionHolder - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] from current transaction org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils 163 sessionHolder - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] from current transaction org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Preparing: {call P_SYS_GET_FID (?)} org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Parameters: org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils 163 sessionHolder - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] from current transaction org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Preparing: INSERT INTO T_IM_PURINDT(FID,FPARENTID,FPRODUCTID,FQTY,FPRICE,FREMARK) ( SELECT ?,?,?,?,?,? ) org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - ==> Parameters: 90000000000097(String), 90000000000096(String), 90000000000045(String), 4444.00(BigDecimal), 4444.00(String), 4444(String) org.apache.ibatis.logging.jdbc.BaseJdbcLogger 159 debug - <== Updates: 1 org.mybatis.spring.SqlSessionUtils 186 closeSqlSession - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization 284 beforeCommit - Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization 310 beforeCompletion - Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7387309a] org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization 315 beforeCompletion - Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@73873

充分利用数据库主键

有一个数据库,ID做主键,每次取最大值加一做主键,但是当中间某几条数据被删除,则需要取被删的最小的值做主键。 例如: 表中有如下数据 ID Name 1 A 2 B 3 C 4 D 5 E 正常情况下,再插入一条数据,ID应该为6,但是假如插入第六条数据之前,ID为2和3 的数据被删除了,此时再插入,那么ID应该为2,而不是6,请问如何控制????

根据多个值更新多个字段

<div class="post-text" itemprop="text"> <p>I have a little issue that I can't figure out, basically a user fills in a form, this data saves into a table, but i have another table where based on some values will update a value in that table to yes.</p> <p>So for example in my form i have value1, value2, value3, value4. all of which are drop down menus with values in that save into a field of the same name in table1.</p> <p>Now in table2 i have a field called spaces, and spacetaken. Each has of these values in this table has corresponds its id to that of value1/2/3/4 fields in tabl1. I hope i explained that ok.</p> <p>Now basically when i save a value i want it to update spacetaken to yes, so for example value1 could be 44, value2 could be 55 and both were selected in drop down and saved to table1, now i want to update table2 spacetaken to yes where spaces = value1 and value2</p> <p>I have this so far</p> <pre><code>UPDATE table2 SET spacetaken='yes' WHERE spaces='value1' AND spaces='value2' </code></pre> <p>this doesnt work.</p> <p>but</p> <pre><code>UPDATE table2 SET spacetaken='yes' WHERE spaces='value1' </code></pre> <p>will set the space with id same as value1 to taken - yes, basically i want a way to set spacestaken to yes based on multiple values.</p> <p>Sorry if i didnt explain this very well.</p> <p>Thanks in advance.</p> <p>Ian</p> </div>

mybatis 执行 INSERT … ON DUPLICATE KEY UPDATE

mybatis 在执行 INSERT … ON DUPLICATE KEY UPDATE 格式的语句的时候 没有报错,库表也没插入数据,数据库是mysql 用mysql客户端执行这条语句的时候却是能插入的 是因为myBatis不支持吗? 语句示例: INSERT INTO test (main_id,score,totalCount) VALUES (123,5.0,12345) ON DUPLICATE KEY UPDATE score=VALUES(score), totalCount=VALUES(totalCount) main_id是主键,以上语在mysql客户端执行能正确插入或更新 <insert id="insertOrUpdate" parameterType="这里就不写了"> INSERT INTO test (main_id,score,totalCount) VALUES (456,5.0,12345) <!--这里有个参数是456,同上面一条的123不一样--> ON DUPLICATE KEY UPDATE score=VALUES(score), totalCount=VALUES(totalCount) </insert> 这是mybatis里面执行的语句,为了直观些,我直接写了一条死语句进来。 同样的两条语句,在mybatis里面执行的时候也不报错,但是数据库却插不进去,也不能更新 求解!

关于xml里面的拼接动态sql,批量插入的,不知道那种是对的

``` <insert id="batchInsertGoods" > insert into dt.ec.goods <trim prefix="(" suffix=")" suffixOverrides=","> <if test="goodsId != null"> goods_id, </if> <if test="platformNo != null"> platform_no, </if> <if test="platformGoodsNo != null"> platform_goods_no, </if> <if test="platformGoodsName != null"> platform_goods_name, </if> <if test="styleNo != null"> style_no, </if> <if test="styleName != null"> style_name, </if> <if test="isStop != null"> is_stop, </if> <if test="autoUpload != null"> auto_upload, </if> <if test="uploadPercent != null"> upload_percent, </if> <if test="shopPrice != null"> shop_price, </if> <if test="safeNums != null"> safe_nums, </if> <if test="onsellTime != null"> onsell_time, </if> <if test="remark != null"> remark, </if> create_time, update_time, <if test="status != null"> status, </if> <if test="isDel != null"> is_del, </if> <if test="hitsShelvesType != null"> hits_shelves_type, </if> <if test="shopId != null"> shop_id, </if> <if test="imageUrl != null"> image_url, </if> <if test="tId != null"> t_id, </if> </trim> values <foreach collection="simpleGoodsList" item="item" index="index"> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="goodsId != null"> #{item.goodsId,jdbcType=INTEGER}, </if> <if test="platformNo != null"> #{item.platformNo,jdbcType=VARCHAR}, </if> <if test="platformGoodsNo != null"> #{item.platformGoodsNo,jdbcType=VARCHAR}, </if> <if test="platformGoodsName != null"> #{item.platformGoodsName,jdbcType=VARCHAR}, </if> <if test="styleNo != null"> #{item.styleNo,jdbcType=VARCHAR}, </if> <if test="styleName != null"> #{item.styleName,jdbcType=VARCHAR}, </if> <if test="isStop != null"> #{item.isStop,jdbcType=TINYINT}, </if> <if test="autoUpload != null"> #{item.autoUpload,jdbcType=TINYINT}, </if> <if test="uploadPercent != null"> #{item.uploadPercent,jdbcType=DECIMAL}, </if> <if test="shopPrice != null"> #{item.shopPrice,jdbcType=DECIMAL}, </if> <if test="safeNums != null"> #{item.safeNums,jdbcType=INTEGER}, </if> <if test="onsellTime != null"> #{item.onsellTime,jdbcType=TIMESTAMP}, </if> <if test="remark != null"> #{item.remark,jdbcType=VARCHAR}, </if> now(), now(), <if test="status != null"> #{item.status,jdbcType=INTEGER}, </if> <if test="isDel != null"> #{item.isDel,jdbcType=TINYINT}, </if> <if test="hitsShelvesType != null"> #{item.hitsShelvesType,jdbcType=TINYINT}, </if> <if test="shopId != null"> #{item.shopId,jdbcType=BIGINT}, </if> <if test="imageUrl != null"> #{item.imageUrl,jdbcType=VARCHAR}, </if> <if test="tId != null"> #{item.tId,jdbcType=VARCHAR}, </if> </trim> </foreach> </insert> ``` ``` <insert id="insertBatch" parameterType="List"> INSERT INTO TStudent(name,age) <foreach collection="list" item="item" index="index" open="("close=")"separator="union all"> SELECT #{item.name} as a, #{item.age} as b FROM DUAL </foreach> </insert> ```

Mybatis小练习 报错 求大神指导,信息详尽

# UserMapper ``` public interface UserMapper { //根据id查询用户信息 public User findUserById(int id) throws Exception; //根据用户名列查询用户列表 public List<User> findUserByName(String name)throws Exception; //插入用户 public void insertUser(User user)throws Exception; } ``` # 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"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址 --> <mapper namespace="com.neuedu.mapper.UserMapper"> <!-- 在 映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过 select执行数据库查询 id:标识 映射文件中的 sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。 --> <select id="findUserById" parameterType="int" resultType="user"> SELECT * FROM user WHERE id=#{value} </select> <!-- 根据用户名称模糊查询用户信息,可能返回多条 resultType:指定就是单条记录所映射的java对象 类型 ${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中。 使用${}拼接sql,引起 sql注入 ${value}:接收输入 参数的内容,如果传入类型是简单类型,${}中只能使用value --> <select id="findUserByName" parameterType="java.lang.String" resultType="com.neuedu.pojo.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> <!-- 添加用户 parameterType:指定输入 参数类型是pojo(包括 用户信息) #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值 --> <insert id="insertUser" parameterType="com.neuedu.pojo.User"> <!-- 将插入数据的主键返回,返回到user对象中 SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键 keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性 order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序 resultType:指定SELECT LAST_INSERT_ID()的结果类型 --> insert into user(id,username,birthday,sex,address) values (seq_user.nextval,#{username},#{birthday},#{sex},#{address}) <!-- 插入数据后,返回自动增长列的ID值,将sql语句的返回值赋给parameterType绑定对象的ID属性 MySQL中使用: select LAST_INSERT_ID() --> <selectKey keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() <!--select seq_user.currval from dual--> </selectKey> <!-- 使用mysql的uuid()生成主键 执行过程: 首先通过uuid()得到主键,将主键设置到user对象的id属性中 其次在insert执行时,从user对象中取出id属性值 --> <!-- <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> SELECT uuid() </selectKey> insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}) --> </insert> <!-- 删除 用户 根据id删除用户,需要输入 id值 --> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from user where id=#{id} </delete> <!-- 根据id更新用户 分析: 需要传入用户的id 需要传入用户的更新信息 parameterType指定user对象,包括 id和更新信息,注意:id必须存在 #{id}:从输入 user对象中获取id属性值 --> <update id="updateUser" parameterType="com.neuedu.pojo.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update> </mapper> ``` # Tset ``` public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; // 此方法是在执行testFindUserById之前执行 @Before public void setUp() throws Exception { // 创建sqlSessionFactory // mybatis配置文件 String resource = "config/SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } @Test public void testFindUserById() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 User user = userMapper.findUserById(1); System.out.println(user); } @Test public void testFindUserByName() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 List<User> list = userMapper.findUserByName("袁超"); sqlSession.close(); System.out.println(list); } } ``` # 报错信息 ``` DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. DEBUG [main] - Class not found: org.jboss.vfs.VFS DEBUG [main] - JBoss 6 VFS API is not available in this environment. DEBUG [main] - Class not found: org.jboss.vfs.VirtualFile DEBUG [main] - VFS implementation org.apache.ibatis.io.JBoss6VFS is not valid in this environment. DEBUG [main] - Using VFS adapter org.apache.ibatis.io.DefaultVFS DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Reader entry: User.class DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo/User.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo/User.class DEBUG [main] - Reader entry: ���� 1 N DEBUG [main] - Checking to see if class com.neuedu.pojo.User matches criteria [is assignable to Object] DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Reader entry: UserMapperTest.class DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper/UserMapperTest.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper/UserMapperTest.class DEBUG [main] - Reader entry: ���� 1 a DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Reader entry: UserMapper.class DEBUG [main] - Reader entry: UserMapper.xml DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.class DEBUG [main] - Reader entry: ���� 1    findUserById (I)Lcom/neuedu/pojo/User; DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.xml DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.xml DEBUG [main] - Reader entry: <?xml version="1.0" encoding="UTF-8" ?> DEBUG [main] - Checking to see if class com.neuedu.mapper.UserMapperTest matches criteria [is assignable to Object] DEBUG [main] - Checking to see if class com.neuedu.mapper.UserMapper matches criteria [is assignable to Object] DEBUG [main] - Opening JDBC Connection DEBUG [main] - Created connection 209833425. DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@c81cdd1] DEBUG [main] - ==> Preparing: SELECT * FROM T_USER WHERE username LIKE '%袁超%' DEBUG [main] - ==> Parameters: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist ### The error may exist in com/neuedu/mapper/UserMapper.xml ### The error may involve com.neuedu.mapper.UserMapper.findUserByName-Inline ### The error occurred while setting parameters ### SQL: SELECT * FROM T_USER WHERE username LIKE '%袁超%' ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at com.sun.proxy.$Proxy3.findUserByName(Unknown Source) at com.neuedu.mapper.UserMapperTest.testFindUserByName(UserMapperTest.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.junit.runner.JUnitCore.run(JUnitCore.java:160) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) at com.mysql.jdbc.Util.getInstance(Util.java:383) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) at com.sun.proxy.$Proxy5.execute(Unknown Source) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ... 29 more ``` # SqlMapConfig.xml ``` <?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="db.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!-- <property name="jdbc.driver" value=""/> --> </properties> <!-- 全局配置参数,需要时再设置 --> <!-- <settings> </settings> --> <!-- 别名定义 --> <typeAliases> <!-- 针对单个别名定义 type:类型的路径 alias:别名 --> <!-- <typeAlias type="com.neuedu.mybatis.po.User" alias="user"/> --> <!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) --> <package name="com.neuedu.pojo"/> </typeAliases> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <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> <!-- 加载 映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> <!--通过resource方法一次加载一个映射文件 --> <!-- <mapper resource="sqlmap/User.xml"/> --> <!-- 通过mapper接口加载单个 映射文件 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 上边规范的前提是:使用的是mapper代理方法 --> <!-- <mapper class="com.neuedu.mapper.UserMapper"/> --> <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 上边规范的前提是:使用的是mapper代理方法 --> <package name="com.neuedu.mapper"/> </mappers> </configuration> ``` # User ``` public class User { //属性名和数据库表的字段对应 private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 private String address;// 地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } } ``` 也不知道为什么,明明已经在UserMapper.xml里面把表名改了,但是报错信息里查找的还是T-user表 求大神指导!感恩! # 问题已解决 在maven文件里加上下面的代码 ``` <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*Mapper.xml</include> </includes> </resource> </resources> ```

Mybatis批量添加insert报错

向mybatis批量insert数据。 这个是在批量添加的接口。我在添加之前会进行一下删除,把ID没有的删除出去 ![图片说明](https://img-ask.csdn.net/upload/201710/18/1508315114_225416.png) 这个是xml ![图片说明](https://img-ask.csdn.net/upload/201710/18/1508315206_680048.png) 空的对象我认为在遍历删除ID的时候就会被筛出去。 但是报得错误: 15:36:22.843 [main] ERROR com.ioe.efficiency.service.impl.ReferenceValueServiceImpl - [DUBBO] createReferenceValue have an error:, dubbo version: 2.4.10, current host: 10.1.140.152 org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '' at line 4 ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: INSERT INTO t_reference_value(customer_id,station_id,record_id,quarterly_time,node_id,type,day, twenty_three,twenty_two,twenty_one,twenty,nineteen,eighteen,seventeen,sixteen,fifteen,fourteen, thirteen,twelve,eleven,ten,nine,eight,seven,six,five,four,three,two,one,zero,sys_record_status) VALUES ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '' at line 4 ; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '' at line 4 at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399) at com.sun.proxy.$Proxy30.insert(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:253) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:52) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) at com.sun.proxy.$Proxy42.createReferenceValue(Unknown Source) at com.ioe.efficiency.service.impl.ReferenceValueServiceImpl.createReferenceValue(ReferenceValueServiceImpl.java:64) at com.ioe.efficiency.service.impl.ReferenceValueServiceImpl$$FastClassBySpringCGLIB$$4e0863e3.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653) at com.ioe.efficiency.service.impl.ReferenceValueServiceImpl$$EnhancerBySpringCGLIB$$f0b98299.createReferenceValue(<generated>) at com.ioe.efficiency.timingtask.ReferenceValueTask.operateUpperCircuit(ReferenceValueTask.java:539) at com.ioe.efficiency.timingtask.ReferenceValueTask.operateUpperCircuit(ReferenceValueTask.java:544) at com.ioe.efficiency.timingtask.ReferenceValueTask.operateUpperCircuit(ReferenceValueTask.java:544) at com.ioe.efficiency.timingtask.ReferenceValueTask.operateUpperCircuit(ReferenceValueTask.java:544) at com.ioe.efficiency.timingtask.ReferenceValueTask.timingOfReferenceValue(ReferenceValueTask.java:253) at com.ioe.efficiency.timingtask.ReferenceValueTask.oneHour(ReferenceValueTask.java:51) at com.ioe.efficiency.service.impl.ReferenceValueTaskTest.oneHour(ReferenceValueTaskTest.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '' at line 4 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) at com.mysql.jdbc.Util.getInstance(Util.java:383) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198) at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198) at sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) at com.sun.proxy.$Proxy49.execute(Unknown Source) at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:45) at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:73) at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:115) at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:170) at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:157) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:386) ... 49 common frames omitted 语句的values之前什么也没有,难道是传进了空对象么?但是空对象在之前已经筛出去了。

Spring boot+mybatis项目新增删除查询都没有问题,但是更新时没有错误数据库里面的数据为什么没有修改?

Controller ``` @PostMapping(value = "/edit") @ResponseBody @PreAuthorize("hasAuthority('sys:contract:edit')") @ApiOperation(value = "编辑合同信息", notes = "保存修改的合同信息")//描述 public Results<SysContract> updateContract(ContractDto contractDto) { SysContract sysContract = null; sysContract = contractService.getContract(contractDto.getName()); if (sysContract != null && !(sysContract.getId().equals(contractDto.getId()))) { return Results.failure(ResponseCode.CONTRACT_REPEAT.getCode(), ResponseCode.CONTRACT_REPEAT.getMessage()); } return contractService.updateContract(contractDto); } ``` Service ``` @Override public Results updateContract(ContractDto contractDto) { contractDao.updateContract(contractDto); log.info("service已经更新"+contractDto.getName()); return Results.success(); } ``` Dao ``` int updateContract(SysContract contract); ``` Dao对应的xml ``` <mapper namespace="com.sxbang.friday.dao.ContractDao"> <update id="updateContract" parameterType="com.sxbang.friday.model.SysContract"> update sys_contract t <set> <if test="name != null"> name = #{name}, </if> <if test="startDate != null"> startDate = #{startDate}, </if> <if test="expireDate != null"> expireDate = #{expireDate}, </if> <if test="contractUrl != null"> contractUrl = #{contractUrl}, </if> updateTime = #{updateTime} </set> where t.id = #{id} </update> </mapper> ``` service获取到的数据已经是修改过的了,为什么数据库还是没更新呢?我前两个用户和顾客资料的更新也是这样写的,几乎一样的为什么这个就更新不了呢?有没有大佬能解答一下...

将CSV数据文件的数据导入mysql数据库问题

<p>问题描述: <br>    假设我要将数据导入<span style="color: #000000;">product</span>表,表结构为。 <br><br>           product_id(产品id)    product_name(产品名称)   <span style="color: #ff0000;">product_type_id</span>(产品类型id) <br><br>   其中product_type_id对应表product_type表结构如下。 <br><br>             product_type_id(产品类型id)    product_type_name(产品类型名称) <br><br>    我现在已经用java将CSV文件解析为一个java数据集合。假设其中包含三个字段。 <br><br>             product_id    product_name   <span style="color: #ff0000;">product_type_name</span> </p> <p> </p> <p>    持久层用的是ibatis.</p> <p> </p> <p> </p> <p> </p> <p>问题:</p> <p>      我想将这个java数据集合中的三个值导入到product表中,但是要将product_type_name根据product_type表转换为procduct_type_id。</p> <p>      我想到的解决方法是:1、对集合中每条数据都查询一次数据库将product_type_id取出再插入。</p> <p>                                    2、将当前集合数据导入一张临时表,对临时表做更新操作,然后再将临时表数据导入product表。</p> <p>      <span style="color: #ff0000;"><span style="color: #000000;">各位高人有什么更好的方法提供么,小弟不胜感激?</span><br></span><br>    <br><br>    </p> <p> </p>

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

C++(数据结构与算法)78:---分而治之

一、分而治之的思想 分而治之方法与软件设计的模块化方法非常相似 分而治之通常不用于解决问题的小实例,而要解决一个问题的大实例。一般步骤为: ①把一个大实例分为两个或多个更小的实例 ②分别解决每个小实例 ③把这些小实例的解组合成原始大实例的解 二、实际应用之找出假币 问题描述 一个袋子有16个硬币,其中只有一个是假币,这个假币比其他的真币重量轻(其他所有真币的重量都是相同的)...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

立即提问
相关内容推荐