增删改都需要程序员通过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); 小配置里的代码底层数据表中的列和实体类中的属性,只要有一个不匹配,MyBatis框架就不能自动的帮我们装配对象了。装配出来的是null<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(); }*///删除public int deleteStudent(int stuid);删除的DAO代码:
小配置 里面的删除代码:
<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();
}
}
---------多条件查询----------------------------------
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>