-
/*动态代理,接口没有实现类.Mybatis为接口提供实现类,即用Proxy.newProxyInstance()创建代理实例,返回类型为Object,利用泛型强制转换*/ IMessage imessage = sqlSession.getMapper(IMessage.class); /*代理实例调用接口方法时,并不会执行,而是触发 MapperProxy.invoke(),其中包含sqlSession.selectList(namespace.id,parameter)*/ /*至于为什么会包含,因为接口方法与(加载Mybatis的)配置信息对应得上,即 接口名.方法=namespace.id*/ messageList = imessage.queryMessageList(message);查看全部
-
Mybatis中的接口试编程即mybatis找到一个接口作为该表操作的代言:1、namespace 2、与sql关联的id3、传入的参数4、返回值 作用:1、规范mybatis中访问配置文/2、遇到spring时{1、总配置文件中的数据源配置托管给spring管理2、db层(getsqlsession)会消失3、组织对象代码移交给service层(即传入的参数)4、sql执行代码由spring实现5、dao层就剩接口文件(小三上位)与配置文件}查看全部
-
自定义标签 封装前台jsp分页代码查看全部
-
sql语句与代码分离,优点:便于管理和维护;缺点:不便于调试,需要借助日志工具获得信息查看全部
-
jdbc中如何批量新增插入语句 1、在循环末尾加上statement.addBatch(); 2、结束后再执行statement.executeBatch();查看全部
-
通过invoke方法执行sql语句 怎么知道要执行的sql语句是怎么样的查看全部
-
代理?查看全部
-
1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。 设想:使用数据库连接池管理数据库连接。 2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。 3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。 设想:将sql语句及占位符号和参数全部配置在xml中。 4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。 设想:将查询的结果集,自动映射成java对象。查看全部
-
Mybatis在案例中呈现出的特点: 1.SQL语句与代码分离 优点:便于管理和维护 缺点:不便于调试,需要借助日志工具获得信息 2.用标签控制动态SQL的拼接 优点:用标签代替编写逻辑代码 缺点:拼接复杂SQL语句时,没有代码灵活,比较复杂 3. 结果集与Java对象的自动映射 优点:保证名称相同即可自动映射 缺点:对开发人员所写的SQL依赖性很强 4. 编写原生SQL 优点:接近JDBC,很灵活 劣势:对SQL语句依赖程序很高;半自动;数据库移植不方便查看全部
-
针对加载过的配置文件会重复加载,应该使用单例模式查看全部
-
解决配置文件加载时机问题,可以写一个监听器查看全部
-
相关代码——(上): @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); }查看全部
-
相关代码——(中): @CommandContentDao.java /** * 和command_content表相关的数据库操作 */ public class CommandContentDao { //使用jdbc批量增加 public void insertBatchByJdbc(List<CommandContent> contetnList){ try { Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/micro_message?characterEncoding=utf-8", "root", "root"); String insertSql="insert into command_content(content,command_id) values(?,?)"; PreparedStatement ps = conn.prepareStatement(insertSql); for(CommandContent c:contetnList){ ps.setString(1,c.getContent()); ps.setInt(2, c.getCommandId()); // ps.executeUpdate();//方法一:不推荐 ps.addBatch();//方法二 } ps.executeBatch();//方法二 } catch (Exception e) { e.printStackTrace(); } } }查看全部
-
相关代码——(下): @CommandContentDao.java /** * 和command_content表相关的数据库操作 */ public class CommandContentDao { //使用mybatics批量新增 public void insertBatch(List<CommandContent> contentlList){ DBAccess dbAccess=new DBAccess(); try { SqlSession sqlSession=dbAccess.getSqlSession(); //通过sqlSession执行SQL语言 ICommandContent commandContent = sqlSession.getMapper(ICommandContent.class); commandContent.insertBatch(contentlList); sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } } }查看全部
-
拦截器实现3 过滤客户 ----- id.matches(".+ByPage$") 获取购票信息 ----- page 购票 ----- 原始sql-->pageSql 送票 ----- return invocation.proceed();查看全部
举报
0/150
提交
取消