带条件判断的Sql语句在Mybatis mapper里转换的问题

写了一条带条件判断的数据库语句例如:
SELECT if((a-b)<=0,0,(a-b)) as c from xxx
意思就是我想判断select a-b as c from xxxx,如果a-b<=0,c=0,如果a-b>0,就c=a-b
这种在mapper里怎么写啊是用标签在select后面直接写么?

2个回答

sql语句怎么写,mapper里就怎么写,你这个用when case写。
select (case when a-b>0 then a-b else 0 end) as c from xxx

qq_23126581
渊渟无迹静涛君 回复weixin_43082585: 不客气
9 个月之前 回复
weixin_43082585
weixin_43082585 谢谢
9 个月之前 回复
qq_23126581
渊渟无迹静涛君 回复贵阳挖掘机马善福,自备车辆专业挖游泳池: 老曹,好久都没人采纳了。
9 个月之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 正确,建议lz采纳
9 个月之前 回复
qq_23126581
渊渟无迹静涛君 如果帮助到你,请采纳本答案。
9 个月之前 回复
<select id="selectC" resultType="java.lang.Integer">
    select (case when a-b &gt; 0 then a-b else 0 end) as c from xxx
</select>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mybatis中mapper.xml分页查询oracle的sql语句,按字段查询
mybatis中mapper.xml分页查询oracle的sql语句,按字段查询
sql语句改成mybatis 的mapper.xml
``` SELECT member_id from access_layer where node_id in("1,2,3","1,2,4","1,3,4","1,3,5") and node_id like "%1,3%"; ```
同一条SQL语句,myBatis查出来的数据和Navicat查出来的数据不同
通过日志打印的mybatis执行的SQL语句,原原本本复制到数据库,可以查出来很多条数据,但是mybatis要么查不到,要么少数据。 1.已尝试过写死传入参数,证明不是参数问题 2.尝试过select *,无效 3.尝试过查询的数据不小于resultMap里面的数据,也无效 4.写一个POJO类(是叫DTO吧?)来接收数据,也无效 5.SQL语句很简单,而且是通过复制到数据库,以及属性名都是通过复制,不存在写错。 走投无路了。。 以下是代码段以及日志: 日志: ``` 2018-07-02 14:05:00,244 DEBUG [org.mybatis.spring.SqlSessionUtils] - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] 2018-07-02 14:05:00,244 DEBUG [org.mybatis.spring.SqlSessionUtils] - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] from current transaction 2018-07-02 14:05:00,244 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Preparing: select v.VideoStream videoStream,v.FileSize fileSize,v.Quality quality,v.UserType userType from vod_videorecord v where trim(v.RoomID) = ? 2018-07-02 14:05:00,244 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Parameters: 9(Integer) 2018-07-02 14:05:00,316 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - <== Total: 17 2018-07-02 14:05:00,316 DEBUG [org.mybatis.spring.SqlSessionUtils] - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] 2018-07-02 14:05:00,316 DEBUG [org.mybatis.spring.SqlSessionUtils] - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] from current transaction 2018-07-02 14:05:00,316 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Preparing: select v.VideoStream videoStream,v.FileSize fileSize,v.Quality quality,v.UserType userType from vod_videorecord v where trim(v.RoomID) = ? 2018-07-02 14:05:00,316 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Parameters: 3(Integer) 2018-07-02 14:05:00,393 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - <== Total: 1143 2018-07-02 14:05:00,394 DEBUG [org.mybatis.spring.SqlSessionUtils] - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] 2018-07-02 14:05:00,394 DEBUG [org.mybatis.spring.SqlSessionUtils] - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] from current transaction 2018-07-02 14:05:00,394 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Preparing: select v.VideoStream videoStream,v.FileSize fileSize,v.Quality quality,v.UserType userType from vod_videorecord v where trim(v.RoomID) = ? 2018-07-02 14:05:00,394 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Parameters: 2(Integer) 2018-07-02 14:05:00,472 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - <== Total: 36 2018-07-02 14:05:00,472 DEBUG [org.mybatis.spring.SqlSessionUtils] - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] 2018-07-02 14:05:00,472 DEBUG [org.mybatis.spring.SqlSessionUtils] - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5f2b1d49] from current transaction 2018-07-02 14:05:00,472 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Preparing: select v.VideoStream videoStream,v.FileSize fileSize,v.Quality quality,v.UserType userType from vod_videorecord v where trim(v.RoomID) = ? 2018-07-02 14:05:00,472 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - ==> Parameters: 1(Integer) 2018-07-02 14:05:00,546 DEBUG [com.talk915.liveManagement.webapp.dao.group.VideoRecordDao.getDataByRoomIdforquery] - <== Total: 575 ``` 以最后一条查询语句为例 : select v.VideoStream videoStream,v.FileSize fileSize,v.Quality quality,v.UserType userType from vod_videorecord v where trim(v.RoomID) = ? 参数:1 返回条数:575条 数据库数据: 594条 这是差的少的情况,差的多了,直接差了几百,一千条数据都是.. 数据库数据: ![图片说明](https://img-ask.csdn.net/upload/201807/02/1530513646_410092.png) mapper里面代码段: ![图片说明](https://img-ask.csdn.net/upload/201807/02/1530513593_738695.png)
mybatis中Mapper通用分页PageHelper+自定义sql语句【多表】+排序问题
项目:maven+eclipse+spring4+mybatis 介绍:使用通用mapper做单表查询很分页。 问题:通过mapper传入pages,rows。添加两个查询条件,然后在根据一个条件排序,同时会通过每条数据的id关联查询第二张表获取数据。现在其他的获取都正常,就是排序失效,后台dubug出查询语句没有问题,数据库执行正常,只是使用mapper的page接收数据时排序失效。 详细代码: pojo代码属性包含两个关联实体: @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column private Integer orders; @Column private String name; @Column private Integer propertyIndex; @Column private Long productCategory; @Transient private ProductCategory category ; @Transient private List<AttributeOption> options = new ArrayList<>() ; service代码 public Page<Attribute> queryAttributeByPage(String searchValue, Integer page, Integer rows,String order) { PageHelper.startPage(page, rows); if(StringUtils.isBlank(searchValue)){ searchValue = null; }else{ searchValue = "%"+searchValue+"%"; } Page<Attribute> attributes = (Page<Attribute>) this.attributeMapper.queryAttributeByPage(searchValue,order); return attributes; } DAO层代码: public List<Attribute> queryAttributeByPage(@Param("searchValue")String searchValue, @Param("order")String order); Mapper.xml配置: <!-- 配置resultMap --> <resultMap id="attributeResultMap" type="cn.dajean.manage.pojo.Attribute" > <id column="id" property="id" /> <result column="product_category" property="productCategory" jdbcType="BIGINT" /> <association column="product_category" property="category" select="queryProductCategoryById" autoMapping="true" /> <collection column="id" property="options" select="queryOptionsByAttributeId" autoMapping="true" /> </resultMap> <!-- 配置查询options延迟加载 --> <select id="queryProductCategoryById" resultType="cn.dajean.manage.pojo.ProductCategory"> SELECT * FROM tb_product_category WHERE id = #{productCategory} </select> <!-- 配置查询options延迟加载 --> <select id="queryOptionsByAttributeId" resultType="cn.dajean.manage.pojo.AttributeOption"> SELECT * FROM tb_attribute_option WHERE attribute = #{id} </select> <select id="queryAttributeByPage" resultMap="attributeResultMap"> select * from tb_attribute <where> <if test="searchValue != null"> and name like #{searchValue} </if> </where> <if test="order != null"> order by #{order} </if> </select> dubug的sql执行语句: Preparing: **SELECT count(*) FROM tb_attribute ORDER BY ? ** [DEBUG] ==> Parameters: orders desc(String) [DEBUG] <== Total: 1 [DEBUG] ==> Preparing: select * from tb_attribute order by ? limit ?,? [DEBUG] ==> Parameters: orders desc(String), 0(Integer), 20(Integer) [DEBUG] ====> Preparing: SELECT * FROM tb_product_category WHERE id = ? DEBUG] ====> Parameters: 14(Long) [DEBUG] <==== Total: 1 以下关联查询,略 使用结果:可以正常分页,可以正常筛选条件,查询语句输出也正常。就是page接受结果中没有排序?这是为什么??大神来解答一下 。如果输自己写查询语句的就可以面回答了,那个我会写,这是项目需要用的mapper,帮助解决者得悬赏
关于Mybatis中SQL语句报错的问题
提示是OrderMapper.XML中的insertSelective出错 报错信息: org.springframework.jdbc.BadSqlGrammarException: ## ## ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: 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 1 ## ## ### The error may exist in file [E:\myProject\mall\target\classes\mapper\OrderMapper.xml] ## ### The error may involve com.example.mall.dao.OrderMapper.insertSelective-Inline ## ### The error occurred while setting parameters ## ### SQL: insert into mall_order ## ### Cause: java.sql.SQLSyntaxErrorException: 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 1 ## ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: 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 1**** ## OrderMapper.XML中的代码: ``` <insert id="insertSelective" parameterType="com.example.mall.pojo.Order"> insert into mall_order <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="orderNo != null"> order_no, </if> <if test="userId != null"> user_id, </if> <if test="shippingId != null"> shipping_id, </if> <if test="payment != null"> payment, </if> <if test="paymentType != null"> payment_type, </if> <if test="postage != null"> postage, </if> <if test="status != null"> status, </if> <if test="paymentTime != null"> payment_time, </if> <if test="sendTime != null"> send_time, </if> <if test="endTime != null"> end_time, </if> <if test="closeTime != null"> close_time, </if> <if test="createTime != null"> create_time, </if> <if test="updateTime != null"> update_time, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="orderNo != null"> #{orderNo,jdbcType=BIGINT}, </if> <if test="userId != null"> #{userId,jdbcType=INTEGER}, </if> <if test="shippingId != null"> #{shippingId,jdbcType=INTEGER}, </if> <if test="payment != null"> #{payment,jdbcType=DECIMAL}, </if> <if test="paymentType != null"> #{paymentType,jdbcType=INTEGER}, </if> <if test="postage != null"> #{postage,jdbcType=INTEGER}, </if> <if test="status != null"> #{status,jdbcType=INTEGER}, </if> <if test="paymentTime != null"> #{paymentTime,jdbcType=TIMESTAMP}, </if> <if test="sendTime != null"> #{sendTime,jdbcType=TIMESTAMP}, </if> <if test="endTime != null"> #{endTime,jdbcType=TIMESTAMP}, </if> <if test="closeTime != null"> #{closeTime,jdbcType=TIMESTAMP}, </if> <if test="createTime != null"> #{createTime,jdbcType=TIMESTAMP}, </if> <if test="updateTime != null"> #{updateTime,jdbcType=TIMESTAMP}, </if> </trim> </insert> ```
mybatis 的sql语句怎么写
这是sql语句 ``` SELECT member_id,MIN(registration_time) from access_layer where node_id != "1,2" and node_id like "%1,2%"; ``` 请问mapper.xml要怎么写,并且我想要获取member_id应该如何获取
springboot mybatis 整合后怎么答应输出sql语句
关于springboot mybatis 整合后,我想看到mybatis的sql语句日志输出,贴出我的Application.java代码 @SpringBootApplication //等价于@ComponentScan+@EnableAutoConfiguration+@Configuration @MapperScan("cn.no7player.mapper") public class Application { private static Logger logger = Logger.getLogger(Application.class); @Bean @ConfigurationProperties(prefix="spring.datasource") public DataSource dataSource() { return new org.apache.tomcat.jdbc.pool.DataSource(); } @Bean public SqlSessionFactory sqlSessionFactoryBean() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml")); return sqlSessionFactoryBean.getObject(); } @Bean public PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSource()); } /** * Start */ public static void main(String[] args) { SpringApplication.run(Application.class, args); logger.info("SpringBoot Start Success"); } }
Java mybatis更新(update)数据时,偶尔会新插入一条重复的一模一样的数据!
前几天在公司写代码的时候遇到了一个奇怪的问题!! 因为公司的项目涉及隐私,所以不能贴代码,我口述一下: 因为我的表没有设计主键,所以通过mybatis逆向工程生成mapper文件的时候,没有update功能,自己手写了一个.但是在后来测试的时候发现,偶尔在update数据的时候,会多出一条一模一样的重复数据,有时候甚至多出三四条,五六条.但是这种情况不是每次都有,偶尔跑个几百条会出现这种情况,我用debug一个个定位原因的时候又没有出现!! 可以肯定的是,一定是我update的时候出现的问题.因为后来我这个bug解决不掉,只能换一种方式:把update改成先delete原来的旧数据,再insert新数据,就不会出现这种情况.. 我反复看了xml里面我的sql语句,没有什么问题...需要各位大神帮忙想想,到底是什么问题? 如果能真正帮我解决这个问题,还可以加悬赏!!!谢谢!!!! 我的业务功能主要就是做了一个定时任务,每隔一段时间跑一次,获取车辆信息,然后根据车牌更新数据
spring-MyBatis练习报错 求大神指导啊啊啊啊?
有的部分用直接用了老师的成品,刚开始练习一对一就报错了,在attach source里加上了mybatis的zip还是不对,UserMapper.xml里的sql语句下的username显示拼写而错误,但是可以运行,不知道怎么回事,刚开始学,求大神指导啊,非常感谢!!! OrdersMapper public interface OrdersMapper public List<OrdersExt> findOrdersAndUser(); } OrdersMapper.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:命名空间,对statement的信息进行分类管理 --> <!-- 注意:在mapper代理时,它具有特殊及重要的作用 --> <mapper namespace="com.zzr.mybatis.mapper.OrdersMapper"> <!--一对一映射语句 --> <select id="findOrdersAndUser" resultType="OrdersExt"> select orders.id, orders.user_id, orders.number, user.username, user.sex from orders,user where orders.user_id = user.id; </select> </mapper> ``` SqlSessionFactoryUtil ``` public class SqlSessionFactoryUtil { private static SqlSessionFactory sessionFactory; static { try { // 加载全局配置文件 String resource = "mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(resource); // 创建sessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 单例模式私有构造 private SqlSessionFactoryUtil() { } // 单例模式获取sessionFactory public static SqlSessionFactory createSessionFactory() { return sessionFactory; } } ``` Test ``` public class OrdersMapperTest { private SqlSessionFactory sessionFactory; @Before public void setup(){ sessionFactory = SqlSessionFactoryUtil.createSessionFactory(); } @Test public void testFindOrdersAndUser(){ //创建session SqlSession session = this.sessionFactory.openSession(); //使用mybatis创建mapper接口的代理对象 OrdersMapper ordersMapper = session.getMapper(OrdersMapper.class); //查询订单信息,关联查询用户信息 List<OrdersExt>ordersExts = ordersMapper.findOrdersAndUser(); System.out.println(ordersExts); } } ``` 报错信息 ``` DEBUG LogFactory:135 - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. DEBUG VFS:109 - Class not found: org.jboss.vfs.VFS DEBUG JBoss6VFS:142 - JBoss 6 VFS API is not available in this environment. DEBUG VFS:109 - Class not found: org.jboss.vfs.VirtualFile DEBUG VFS:70 - VFS implementation org.apache.ibatis.io.JBoss6VFS is not valid in this environment. DEBUG VFS:84 - Using VFS adapter org.apache.ibatis.io.DefaultVFS DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po DEBUG DefaultVFS:102 - Reader entry: Items.class DEBUG DefaultVFS:102 - Reader entry: Orderdetail.class DEBUG DefaultVFS:102 - Reader entry: Orders.class DEBUG DefaultVFS:102 - Reader entry: OrdersExt.class DEBUG DefaultVFS:102 - Reader entry: User.class DEBUG DefaultVFS:102 - Reader entry: UserQueryVO.class DEBUG DefaultVFS:113 - Listing file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/Items.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/Items.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/Orderdetail.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/Orderdetail.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/Orders.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/Orders.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/OrdersExt.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/OrdersExt.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/User.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/User.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/UserQueryVO.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/po/UserQueryVO.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.po.Items matches criteria [is assignable to Object] DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.po.Orderdetail matches criteria [is assignable to Object] DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.po.Orders matches criteria [is assignable to Object] DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.po.OrdersExt matches criteria [is assignable to Object] DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.po.User matches criteria [is assignable to Object] DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.po.UserQueryVO matches criteria [is assignable to Object] DEBUG LogFactory:135 - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter. DEBUG PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections. DEBUG PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections. DEBUG PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections. DEBUG PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections. DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper DEBUG DefaultVFS:102 - Reader entry: OrdersMapper.class DEBUG DefaultVFS:102 - Reader entry: OrdersMapper.xml DEBUG DefaultVFS:102 - Reader entry: UserMapper.class DEBUG DefaultVFS:102 - Reader entry: UserMapper.xml DEBUG DefaultVFS:113 - Listing file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/OrdersMapper.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/OrdersMapper.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/OrdersMapper.xml DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/OrdersMapper.xml 00:45:25,274 DEBUG DefaultVFS:102 - Reader entry: <?xml version="1.0" encoding="UTF-8"?> DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/UserMapper.class DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/UserMapper.class DEBUG DefaultVFS:102 - Reader entry: ���� DEBUG DefaultVFS:222 - Find JAR URL: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/UserMapper.xml DEBUG DefaultVFS:248 - Not a JAR: file:/D:/java_se/zzr/MyBatis002/build/classes/com/zzr/mybatis/mapper/UserMapper.xml DEBUG DefaultVFS:102 - Reader entry: <?xml version="1.0" encoding="UTF-8"?> DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.mapper.OrdersMapper matches criteria [is assignable to Object] DEBUG ResolverUtil:256 - Checking to see if class com.zzr.mybatis.mapper.UserMapper matches criteria [is assignable to Object] java.lang.ExceptionInInitializerError at com.zzr.mybatis.test.OrdersMapperTest.setup(OrdersMapperTest.java:19) 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: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.RunBefores.evaluate(RunBefores.java:24) 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.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in com/zzr/mybatis/mapper/UserMapper.xml ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'org.mybatis.caches.ehcache.EhcacheCache'. Cause: java.lang.ClassNotFoundException: Cannot find class: org.mybatis.caches.ehcache.EhcacheCache at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64) at com.zzr.mybatis.utils.SqlSessionFactoryUtil.<clinit>(SqlSessionFactoryUtil.java:19) ... 24 more Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'org.mybatis.caches.ehcache.EhcacheCache'. Cause: java.lang.ClassNotFoundException: Cannot find class: org.mybatis.caches.ehcache.EhcacheCache at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:121) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:99) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:78) ... 26 more Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'org.mybatis.caches.ehcache.EhcacheCache'. Cause: java.lang.ClassNotFoundException: Cannot find class: org.mybatis.caches.ehcache.EhcacheCache at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120) at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92) at org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.loadXmlResource(MapperAnnotationBuilder.java:173) at org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parse(MapperAnnotationBuilder.java:124) at org.apache.ibatis.binding.MapperRegistry.addMapper(MapperRegistry.java:72) at org.apache.ibatis.binding.MapperRegistry.addMappers(MapperRegistry.java:97) at org.apache.ibatis.binding.MapperRegistry.addMappers(MapperRegistry.java:105) at org.apache.ibatis.session.Configuration.addMappers(Configuration.java:737) at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:364) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:119) ... 28 more Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'org.mybatis.caches.ehcache.EhcacheCache'. Cause: java.lang.ClassNotFoundException: Cannot find class: org.mybatis.caches.ehcache.EhcacheCache at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120) at org.apache.ibatis.builder.xml.XMLMapperBuilder.cacheElement(XMLMapperBuilder.java:202) at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:114) ... 37 more Caused by: java.lang.ClassNotFoundException: Cannot find class: org.mybatis.caches.ehcache.EhcacheCache at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200) at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) at org.apache.ibatis.io.Resources.classForName(Resources.java:261) at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116) ... 39 more ```
mybatis怎么提取最终sql
做log 要把最终执行的sql保存到数据库中 因为使用了一些通用mapper,怎么获取最终的sql语句
spring mybatis sql语句使用注解描述
这是xml种一条sql语句,请问如何使用注解的形式改写这条语句? 一般的xml的mapper语句很好改写selectProvider,但是包含这个引用的, 以及含有trim的不知道怎么弄? <sql id="example" > <where > <foreach collection="xxxCriteria" item="criteria" separator="or" > <if test="criteria.valid" > <trim prefix="(" suffix=")" prefixOverrides="and" > <foreach collection="criteria.criteria" item="criterion" > <choose > <when test="criterion.noValue" > and ${criterion.condition} </when> <when test="criterion.singleValue" > and ${criterion.condition} #{criterion.value} </when> <when test="criterion.betweenValue" > and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} </when> <when test="criterion.listValue" > and ${criterion.condition} <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," > #{listItem} </foreach> </when> </choose> </foreach> </trim> </if> </foreach> </where> </sql>
springmvc+mybatis一次操作多张表插入的问题
如题,本人才接触Java的springmvc,前端的一次保存点击事件,后端需要分别向5张表插入数据,看了网上的demo,几乎一张表对应一个mapper,mapper里面有对应这张表的操作,五张表执行插入操作。。。任何一张出问题就回滚,自然想到用事务来控制,但是貌似网上也没有怎么看到这方面的说明。。。。目前的插入数据方式是kssryjbxxbService.insert(kssryjbxx); 这种方式,有没有事务控制可回滚的方式,比如sqlsession,sringmvc里面怎么使用sqlsession,还有就是问个额外的问题,目前开发的系统涉及到几百张表。。。都写mapper的话太麻烦了,有没有老式的直接执行sql语句的操作方式。。。而不是每张表都去建立对应的dao,mapper,service....
springboot 配置多库之后,mybatis在控制台不打印sql语句了
springboot项目 单库下,mybatis只需要添加如下配置,就可以打印sql语句 ```xml <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> ``` 但是多库环境下,mybatis不论怎么设置,都无法打印sql语句..... ---- ---- 项目中的相关配置: mybatis配置: ```xml <!-- 设置运行参数 --> <settings> <!-- 全局映射器启用缓存 --> <setting name="cacheEnabled" value="true" /> <!-- 查询时,关闭关联对象及时加载以提高性能 --> <setting name="lazyLoadingEnabled" value="false" /> <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 --> <setting name="aggressiveLazyLoading" value="false" /> <!-- 对于位置的SQL查询,允许返回不同的结果集以达到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 允许使用列标签代替列明 --> <setting name="useColumnLabel" value="true" /> <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值), 数据表的pk生成策略将被覆盖 --> <setting name="useGeneratedKeys" value="true" /> <!-- 给予被嵌套的resultMap以字段-属性的映射支持 --> <setting name="autoMappingBehavior" value="PARTIAL" /> <!-- 对于批量更新操作缓存SQL以提高性能 --> <setting name="defaultExecutorType" value="REUSE" /> <!-- 数据库超过25000秒仍未响应则超时 --> <!--<setting name="defaultStatementTimeout" value="25000" />--> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> <!-- 开启驼峰--> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> ``` logback配置: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true"> <!-- 属性1:每个logger都关联到logger上下文,默认上下文名称为“default”。 但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。 --> <contextName>logback</contextName> <!--属性2:定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <!-- <springProfile name="dev"> <property name="LOG_PATH" value="D://care-management-statisticserver-logs"/> </springProfile> <springProfile name="test"> <property name="LOG_PATH" value="/data/tomcat_jar/taixin_care/care-management-statisticserver/logs"/> </springProfile> <springProfile name="prod"> <property name="LOG_PATH" value="/data1/logs/care-management-statisticserver"/> </springProfile> --> <property name="LOG_PATH" value="${LOG_FILE}"/> <!--appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。--> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern> </encoder> </appender> <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>--> <!-- 说明: 1、日志级别及文件 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中 例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志, 日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名 例如log-level-2013-12-21.0.log 其它级别的日志也是如此。 2、文件路径 若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。 若部署到Tomcat下,则在Tomcat下的logs文件中 3、Appender FILEERROR对应error级别,文件名以log-error-xxx.log形式命名 FILEWARN对应warn级别,文件名以log-warn-xxx.log形式命名 FILEINFO对应info级别,文件名以log-info-xxx.log形式命名 FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名 CONSOLE将日志信息输出到控制上,为方便开发测试使用 --> <!-- 日志记录器,日期滚动记录 --> <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/error_statisticserver.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/error-statisticserver-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 表示只保留最近30天的日志,以防止日志填满整个磁盘空间。--> <maxHistory>30</maxHistory> <!--用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志。--> <totalSizeCap>1GB</totalSizeCap> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, 命名日志文件,例如log-error-2013-12-21.0.log --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern> <charset>utf-8</charset> </encoder> <!-- 此日志文件只记录error级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/info_statisticserver.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/info-statisticserver-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 表示只保留最近30天的日志,以防止日志填满整个磁盘空间。--> <maxHistory>30</maxHistory> <!--用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志。--> <totalSizeCap>1GB</totalSizeCap> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,命名日志文件,例如log-error-2013-12-21.0.log --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern> <charset>utf-8</charset> </encoder> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- <logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。 --> <logger name="org.springframework" level="INFO"/> <logger name="org.apache" level="ERROR"/> <logger name="org.hibernate.validator" level="ERROR"/> <!--<logger name="org.thymeleaf" level="ERROR"/>--> <logger name="org.springframework.context.annotation" level="ERROR"/> <!-- springProfile多环境日志输出,据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出--> <springProfile name="dev" /> <root level="INFO"> <appender-ref ref="FILEERROR"/> <appender-ref ref="FILEINFO"/> <appender-ref ref="STDOUT"/> </root> <!-- 可以启动服务的时候指定 profile (如不指定使用默认),如指定prod 的方式为: java -jar xxx.jar –spring.profiles.active=prod--> </configuration> ``` application.properties部分配置: ```properties #配置文件 logging.level.tk.mybatis=TRACE spring.freemarker.cache=false spring.freemarker.request-context-attribute=request mybatis.type-aliases-package=com.mtpf.domain mybatis.mapper-locations=classpath:mapper/*.xml mapper.mappers=com.mtpf.util.MyMapper mapper.not-empty=false mapper.identity=MYSQL pagehelper.helperDialect=mysql #true 是超出最大页码返回数据 false超出最大页码不返回数据 pagehelper.reasonable=${PAGEHELPER_REASONABLE} pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql ```
mybatis 查询不出结果,但是打印的SQL 可以执行
我今天发现了一个非常诡异的错误,我在此请求大家集思广益一下. 我的系统采用的是 spring + mybatis ,我在做一个简单的数据查询的时候碰到查询不出来的问题,开始我认为是 resultMap 配置有问题,后台我测试很多遍发现不是这个原因, 最后我发现一个诡异的事情, List<SysUserAccount> resList = sysUserAccountService.selectByParam(sysUserAccount); 这个语句是一个简单的调用service 在调用--> mapper 的简单查询,在我采用 <select>(1) 号 写法的时候 ,可以正常返回 LIST 但是采用 <select>(2) 号 写法的时候,,,LIST = null 也就是说我无法带值进去查询,但是写 where id is not null 是可以查询到, 写 where id = 'A001' LIST 就是 等于NULL 另外一个问题就是,某些SQL语句, JAVA 调用DAO方法的结果为NULL的时,mybatis 的日志打印出来的SQL 我试着放到 数据库工具中运行是有结果,也就代表SQL 肯定没写错. selelect (1) 号 ``` <select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount"> select * from sys_user_account </select> ``` 1号 返回结果正常,LIST收到100多个记录 selelect (2) 号 ``` <select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount"> select * from sys_user_account where ACCOUNT_TYPE = 3 </select> ``` 2号 JAVA LIST 接收到的为一个空LIST ,LIST 中的元素为 null SIZE 为 0. 里面的值我都写死了,排除了传值问题,所有这么写 <select> 3号 ``` <select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount"> select * from sys_user_account where ACCOUNT_TYPE is not null </select> ``` 结果是正常,查询到了所有 TYPE 不为空的 我感觉很奇怪,找了很久都没有找到问题,希望有人能帮帮我.
MyBatis-plus分页条件自定义查询的问题
```java package io.renren.modules.soft.service.impl; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.renren.common.utils.PageUtils; import io.renren.common.utils.Query; import io.renren.modules.soft.dao.OrderDao; import io.renren.modules.soft.dto.OrderVO; import io.renren.modules.soft.entity.OrderEntity; import io.renren.modules.soft.service.OrderService; @Service("orderService") public class OrderServiceImpl extends ServiceImpl<OrderDao, OrderEntity> implements OrderService { @Autowired private OrderDao orderDao; @Override public PageUtils getlistData(Map<String, Object> params) { Page<OrderVO> page = (Page<OrderVO>) new Query<OrderVO>().getPage(params); page.setRecords(this.baseMapper.selectListData(page,params)); return new PageUtils(page); } } ``` OrderDao.java方法 ``` package io.renren.modules.soft.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.renren.modules.soft.dto.OrderVO; import io.renren.modules.soft.entity.OrderEntity; /** * 订单基础表 * * @author Mark * @email sunlightcs@gmail.com * @date 2019-03-22 08:54:02 */ @Mapper public interface OrderDao extends BaseMapper<OrderEntity> { List<OrderVO> selectListData(Page<OrderVO> page, @Param("map")Map<String, Object> params); } ``` 自定的XML中的SQL语句 ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="io.renren.modules.soft.dao.OrderDao"> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="io.renren.modules.soft.entity.OrderEntity" id="orderMap"> <result property="id" column="ID"/> <result property="orderNo" column="order_no"/> <result property="orderType" column="order_type"/> <result property="orderTitle" column="order_title"/> <result property="totalFee" column="total_fee"/> <result property="settlementTotalFee" column="settlement_total_fee"/> <result property="payWay" column="pay_way"/> <result property="orderStatus" column="order_status"/> <result property="payStatus" column="pay_status"/> <result property="payId" column="pay_id"/> <result property="userId" column="user_id"/> <result property="payEndTime" column="pay_end_time"/> <result property="createTime" column="create_time"/> <result property="createBy" column="create_by"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="status" column="status"/> </resultMap> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="io.renren.modules.soft.dto.OrderVO" id="orderVOMap"> <result property="id" column="ID"/> <result property="orderNo" column="order_no"/> <result property="orderType" column="order_type"/> <result property="orderTitle" column="order_title"/> <result property="totalFee" column="total_fee"/> <result property="settlementTotalFee" column="settlement_total_fee"/> <result property="payWay" column="pay_way"/> <result property="orderStatus" column="order_status"/> <result property="payStatus" column="pay_status"/> <result property="payId" column="pay_id"/> <result property="username" column="username"/> <result property="payEndTime" column="pay_end_time"/> </resultMap> <select id="selectListData" parameterType="String" resultMap="orderVOMap"> SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id <if test="map.username != null"> AND au.wechat_nick_name like concat(concat("%",#{map.username}),"%") </if> </select> </mapper> ``` 出现的问题:当map.username不是空的时候,在第一页能够查询出所有的结果,但是跳转到第二页的时候,再输入条件查询,直接连带着分页参数和条件查询参数直接查询SQL语句。 这样,如果第二页中不存在这个条件的结果,那么就完全查询不到着一条数据。请问有什么解决方法 当在第一页查询的日志如下: ``` i.r.m.soft.dao.OrderDao.selectListData : ==> Preparing: SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id AND au.wechat_nick_name like concat(concat("%",?),"%") LIMIT ?,? i.r.m.soft.dao.OrderDao.selectListData : ==> Parameters: 刘仁(String), 0(Long), 10(Long) i.r.m.soft.dao.OrderDao.selectListData : <== Total: 3 ``` 当在第二页的时候查询日志如下: ``` i.r.m.soft.dao.OrderDao.selectListData : ==> Preparing: SELECT a.ID, a.order_no, a.order_type, a.order_title, a.total_fee, a.settlement_total_fee, a.pay_way, a.order_status, a.pay_status, a.pay_id, au.wechat_nick_name as username, a.pay_end_time FROM tb_order a, tb_user au WHERE a.status = 0 AND a.user_id = au.id AND au.wechat_nick_name like concat(concat("%",?),"%") LIMIT ?,? i.r.m.soft.dao.OrderDao.selectListData : ==> Parameters: 刘仁(String), 10(Long), 10(Long) i.r.m.soft.dao.OrderDao.selectListData : <== Total: 0 ``` 因为分页了,所有查询不到结果,可是我想分不分也都能查询到全部结果,各位大神有什么好的解决方案,请帮一下忙。
mybatis collection 两表关联,主表不是主键的字段与从表关联问题
用mybatis collection 做两表关联,其中主表中的某一个不是主键的字段与从表关联 先看数据库中查询的结果 ![图片说明](https://img-ask.csdn.net/upload/201611/25/1480045632_725707.jpg) mapper.xml ![图片说明](https://img-ask.csdn.net/upload/201611/25/1480045791_605314.jpg) 在主表实体中增加了private List<Exam_Teacher> examdetail; sql 语句 ![图片说明](https://img-ask.csdn.net/upload/201611/25/1480045913_167587.jpg) 这样返回的结果不是从属结果,没有关联上.
mybatis中对于子查询列的排序问题
我在mysql中直接写语句: SELECT bgb.goods_num, bgb.goods_type_icon, bgb.goods_id, bgb.goods_name, bgb.goods_sort, bgt.type_name, bgs.style_name, bgbr.brand_name, bgb.goods_code, bgb.is_shelf, (select sum(sku_sale_count) from busi_goods_sku AS bgsku WHERE bgb.goods_id=bgsku.goods_id) as sale_count FROM busi_goods_base AS bgb LEFT JOIN busi_goods_type AS bgt ON bgb.goods_type_id=bgt.type_id LEFT JOIN busi_goods_style AS bgs ON bgb.goods_style_id=bgs.style_id LEFT JOIN busi_goods_brand as bgbr ON bgb.goods_brand_id=bgbr.brand_id WHERE bgb.is_del=0 ORDER BY sale_count DESC 是 可以进行查询的,但是把它放到mybatis的mapper.xml中,运行的时候会报错 ![图片说明](https://img-ask.csdn.net/upload/201712/18/1513585576_407575.png)
Spring mvc 中的mapper.xml的SQL语句报错
### 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 'interval=2,conn_timeout=1,resp_timeout=1,test_retry=1,freq=2,monit_conn_timeout=' at line 1 ### The error may involve com.security.dao.TemplateNetworkDao.updateTempNetwork-Inline ### The error occurred while setting parameters ### SQL: update conf_template_network set interval=?,conn_timeout=?,resp_timeout=?,test_retry=?,freq=?,monit_conn_timeout=?,monit_resp_timeout=?,monit_retry=? where id=? ### 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 'interval=2,conn_timeout=1,resp_timeout=1,test_retry=1,freq=2,monit_conn_timeout=' at line 1 ; 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 'interval=2,conn_timeout=1,resp_timeout=1,test_retry=1,freq=2,monit_conn_timeout=' at line 1_ 我的SQL语句是 ``` <update id="updateTempNetwork" parameterType="int"> update conf_template_network set interval=#{interval},conn_timeout=#{conn_timeout},resp_timeout=#{resp_timeout},test_retry=#{test_retry},freq=#{freq},monit_conn_timeout=#{monit_conn_timeout},monit_resp_timeout=#{monit_resp_timeout},monit_retry=#{monit_retry} where id=#{id} </update> ``` 找了半天也没找到哪写错了,而且也没有使用mysql的关键字,提示说monit_conn_timeout附近的错误 # ## ——————————————————————————————————** # ## 更新:好像是SQL语句太长了,把前边的字段改短后,前边的字段就能正确显示,但是后边超出长度的部分还是会报错 我把前边长的字段用a,b替代之后,变短了: ``` <update id="updateTempNetwork" parameterType="com.security.entity.TemplateNetwork"> update conf_template_network set interval=#{interval},conn_timeout=#{conn_timeout},resp_timeout=#{resp_timeout},test_retry=#{test_retry},freq=#{freq},a=#{a},b=#{b},monit_retry=#{monit_retry} where id=#{id} </update> ``` 错误就移到了后边: 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 'interval=3,conn_timeout=3,resp_timeout=3,test_retry=3,freq=1,a=2,b=1,monit_retry' at line 1 ; 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 'interval=3,conn_timeout=3,resp_timeout=3,test_retry=3,freq=1,a=2,b=1,monit_retry' at line 1 好像跟长度又没关系 把后边的字段都砍掉了之后 ``` <update id="updateTempNetwork" parameterType="com.security.entity.TemplateNetwork"> update conf_template_network set interval=#{interval},conn_timeout=#{conn_timeout},resp_timeout=#{resp_timeout},test_retry=#{test_retry},freq=#{freq} where id=#{id} </update> ``` 还是会报错: 移到了最后: ### SQL: update conf_template_network set interval=?,conn_timeout=?,resp_timeout=?,test_retry=?,freq=? where id=? ### 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 'interval=1,conn_timeout=2,resp_timeout=2,test_retry=1,freq=1 where id=1' at line 1 ; 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 'interval=1,conn_timeout=2,resp_timeout=2,test_retry=1,freq=1 where id=1' at line 1 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:73) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) at $Proxy29.update(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at $Proxy37.updateTempNetwork(Unknown Source) at com.security.service.impl.TemplateNetworkImpl.updateTempNetwork(TemplateNetworkImpl.java:35) at com.security.service.impl.TemplateNetworkImpl$$FastClassBySpringCGLIB$$16455d80.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) 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:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) at com.security.service.impl.TemplateNetworkImpl$$EnhancerBySpringCGLIB$$a87fea1.updateTempNetwork(<generated>) at com.security.controller.TemplateNetworkController.updateTempNetwork(TemplateNetworkController.java:47) 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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 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 'interval=1,conn_timeout=2,resp_timeout=2,test_retry=1,freq=1 where id=1' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:408) at com.mysql.jdbc.Util.getInstance(Util.java:383) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1062) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2840) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1302) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:67) 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:59) at $Proxy48.execute(Unknown Source) at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46) at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74) at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198) 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:433) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # 结贴啦结帖啦! # 休息两天果然脑细胞就活过来了,周一一大早就找到了bug # interval是mySQL的关键字,用作变量名,所以报错了,换个名字就好了。已经是第二次撞到关键字了,以后起变量名要小心了。 # 非常感谢各位的帮助!!
mybatis 批量更新传值问题
项目是spring boot的框架 yml文件: ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504517954_25046.png) ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504517964_164438.png) mapper 批量更新语句 ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504533008_435328.png) 报错信息: ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504519590_329350.png) 结果传值不成功! 调整mapper如下: ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504533226_334003.png) 报错信息: ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504533414_982516.png) 两个mapper比较得出:#{}取值不成功 ${}取值可以,但是: 1、mapper里的其它语句都是#{}取值 2、数据库里的id都是uuid,${id}取值成功但是取出来的不是字符串 于早作了如下改变, ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504533865_964992.png) 还是报错,信息如下: ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504534097_873844.png) 上面这条sql在数据库里能执行,但是在程序里报注入异常 于是,我想是数据库连接里什么配置没有开启,修改数据库url连接如下: url:jdbc:mysql://127.0.0.1:3306/test?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf-8 mapper依次如上三次修改配置,运行都报错。。。 崩溃了,我真的不知道这是什么问题了? 有知道的兄弟,请不吝赐教。
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
剑指Offer对答如流系列 - 重建二叉树
面试题6:重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出图2.6所示的二叉树并输出它的头结点。二叉树结点的定义如下: class TreeNode{ int val; TreeNode l...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问