-
通过代购来理解拦截器查看全部
-
mybatis与JDBC的比较查看全部
-
没有实现类的接口为什么能执行定义的方法(动态代理)查看全部
-
接口试编程查看全部
-
mybatis的拦截器实现分页(动态代理) 拦截sql语句来实现分页 1.拦截什么样的对象(以page作为参数传入;page对象) 2.拦截对象什么行为 3.什么时候拦截 (在prepareStatement的时候拦截) (源码) 1.RoutingStatementHandler 2.通过RoutingStatementHandler对象的属性delegate找到statement实现类BaseStatementHandler 3.通过BaseStatementHandler类的反射得到对象的MappedStatement对象 4.通过MappedStatement的属性getID得到配置文件sql语句的ID 5.通过BaseStatementHandler属性的到原始sql语句 6.拼接分页sql( 1.需要查询总数的sql 2.通过拦截Connection对象得到PrepareStatement对象 3.得到对应的参数 4.把参数设到prepareStatement对象里的?(该?号在配置文件以#{}形式存在,mybatis会把它转为?号) 5.执行噶sql语句 6.得到总数 ) 7.把属性值为新的sql查看全部
-
Ps:parameterType与接口的参数类型一致;parameterType不区分大小写,不需要写完整,如:java.util.Map-->map。(推荐还是全写完整) 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
相关代码——(下): /** * 通过MyBatis方式批量新增 */ public void insertBatchByMyBatis(List<CommandContent> contentList) { DBAccess dbAccess = new DBAccess(); SqlSession sqlSession = null; try { sqlSession=dbAccess.getSqlSession(); //通过sqlSession执行SQL语句 ICommandContent commandContent = sqlSession.getMapper(ICommandContent.class); commandContent.insertBatch(contentList); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); } finally { if(sqlSession!=null){ sqlSession.close(); } } } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
相关代码——(中): @CommandContentDao.java /** * 和command_content表相关的数据库操作 */ public class CommandContentDao { /** * 通过JDBC方式批量新增 */ public void insertBatchByJDBC(List<CommandContent> contentList) { try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/micro_message", "root", "."); String inserSql = "insert into commandcontent(content,commandId) values(?,?)"; PreparedStatement pstmt = conn.prepareStatement(inserSql); for (CommandContent content : contentList) { pstmt.setString(1, content.getContent()); pstmt.setInt(2, Integer.valueOf(content.getCommandId())); // pstmt.executeUpdate();//方法1(不推荐) pstmt.addBatch();// 方法2 } pstmt.executeBatch();// 方法2(推荐) } catch (Exception e) { e.printStackTrace(); } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
相关代码——(上): @CommandContent.xml <insert id="insertOne" parameterType="com.imooc.bean.CommandContent"> insert into COMMAND_CONTENT(CONTENT,COMMAND_ID) values(#{content},#{commandId}) </insert> <insert id="insertBatch" parameterType="java.util.List"> insert into commandcontent(content,commandId) values <foreach collection="list" item="item" separator=","> (#{item.content},#{item.commandId}) </foreach> </insert> @ICommandContent.java public interface ICommandContent { /** * 单条新增 */ public void insertOne(CommandContent content); /** * 批量新增 */ void insertBatch(List<CommandContent> contentList); } Ps1:注意:批量新增不同的SQL有不同的语法。(这里针对MySQL) Ps2:separator=",":会加在中间,不会加在头尾。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
mybatis 模拟执行sql语句过程查看全部
-
@SQL语句里的limit使用方法 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了上面这样一个功能。 LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。 mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT 0,n。 案例: SELECT * FROM table LIMIT 0,5;//0、1、2、3、4 SELECT * FROM table LIMIT 5,5;//5、6、7、8、9 SELECT * FROM table LIMIT 10,5;//10、11、12、13、14查看全部
举报
0/150
提交
取消