增删改都需要程序员通过session.commit提交事务
MyBatis中如何去集成log4有什么作用:可以 在控制台打印出SQL语句 ;
MyBatis中如何去集成log4j
步骤1:在pom.xml中添加一个log4j依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 步骤2:在Resource目录中添加一个名称为log4j.property文件
添加
添加的DAO代码:
public int addStudent(studentinfo stu); 小配置里的代码 <insert id="addStudent"> INSERT INTO studentinfo(stuName,stuAge,stuDate) VALUE (#{stuName},#{stuAge},#{stuDate}) </insert> 添加的单侧的代码 @Test //02.根据主键查询单个对象 public void add(){ String path="MyBatis-config.xml"; InputStream is= null; try { is = Resources.getResourceAsStream(path); SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); SqlSession session=factory.openSession(); IStudentInfoDAO dao = session.getMapper(IStudentInfoDAO.class); studentinfo stu=new studentinfo(); stu.setStuName("太阳"); stu.setStuAge(33); stu.setStuDate(new Date()); dao.addStudent(stu); session.commit(); System.out.println("ok!"); session.close(); } catch (IOException e) { e.printStackTrace(); } }修改的DAO代码://修改 public int updateStudent(studentinfo info); 小配置 里面的修改代码:<update id="updateStudent"> UPDATE studentinfo SET stuName=#{stuName} where stuId=#{stuId} </update>修改的单侧//修改 @Test public void xg() throws Exception { // SqlSession session=myBatis.getSqlSession(); IStudentInfoDAO dao=session.getMapper(IStudentInfoDAO.class); studentinfo stu=new studentinfo(); stu.setStuName("星星"); stu.setStuId(2); dao.updateStudent(stu); session.commit(); System.out.println("完美"); session.close(); }*/删除的DAO代码: //删除public int deleteStudent(int stuid);小配置 里面的删除代码:<delete id="deleteStudent"> DELETE from studentinfo where stuId=#{stuId} </delete>删除单侧//删除 /*@Test public void xc() throws Exception { // SqlSession session=myBatis.getSqlSession(); IStudentInfoDAO dao=session.getMapper(IStudentInfoDAO.class); dao.deleteStudent(3); session.commit(); System.out.println("ok"); session.close(); }*/.util:工具类层 public class MyBatisUtil { //Mybatis static String path="Mybatis-config.xml"; static SqlSessionFactory factory; static{ try { InputStream is = Resources.getResourceAsStream(path); factory= new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSession(){ return factory.openSession(); }} 底层数据表中的列和实体类中的属性,只要有一个不匹配,MyBatis框架就不能自动的帮我们装配对象了。装配出来的是null
---------多条件查询---------------------------------- select * from studentinfo where stuname like '%' #{stuName} '%' and stuAge>#{stuAge}
select * from studentinfo where stuname like concat('%',#{stuName},'%') and stuAge>#{stuAge}
select * from studentinfo where stuname like '%${stuName}%' and stuAge>#{stuAge}
-------SQL片段:主要解决多个列重复书写的问题 <sql id="columns"> stuid,stuname </sql>
