mybatis快速学习(二)

对于mybatis应用的一些优化:

可以把数据库配置文件放在一个单独的文件中,在mybatis的配置文件中引入就可以了例如: driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/jskyusername=rootpassword=123456在配置文件中引入:<!– 引入配置文件 –><properties resource="db.propertities"/>为了不用每次都写全类名,可以在配置文件中为类创建别名:<!– 指定別名 –><typeAliases ><!– 指定單個類的別名 –><!– <typeAlias type="jsky.model.Student" alias="_Student"/> –> <!– 指定某個包下所有類別名,,默認直接類名 –> <package name="jsky.model"/></typeAliases>可以创建相关的工具类来帮助我们获取sessionpublic class MyBatisUtils { private static SqlSessionFactory factory; static { try {InputStream is=Resources.getResourceAsStream("mybatis.xml");factory=new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } /** * 创建sqlsession * @return sqlsession */ public static SqlSession getSession() { return factory.openSession(); } /** * 关闭sqlsession * @param sqlSession sqlsession */ public static void closeSession(SqlSession sqlSession) {if(sqlSession!=null)sqlSession.close(); }}在应用时,可以为类设计DAO接口,而映射文件对该接口的方法实现数据库的操作StudentMapper.javapublic interface StudentMapper {/** * 通過id獲取學生信息 * @param id * @return */Student getById(Integer id);/** * 通過name獲取學生信息 * @param name * @return */Student getByName(String name);/** * 獲取所有學生信息 * @return */List<Student> getAll();/** * insert a student message * @param student */void insert(Student student);/** *delete a student * @param id */void delete(Integer id);/** * update a student message * @param student */void update(Student student);}对应的配置文件:这里namespace填接口<mapper namespace="jsky.dao.StudentMapper"><select id="getById" parameterType="Integer" resultType="Student">select * from student where id=#{id}</select><select id="getByName" parameterType="String" resultType="Student">select * from student where name=#{name}</select><select id="getAll" resultType="Student">select * from student</select><insert id="insert" parameterType="Student" useGeneratedKeys="true" keyProperty="id" >insert into student(name,password,school) values(#{name},#{password},#{school})</insert><delete id="delete" parameterType="Integer">delete student where id=#{id}</delete><update id="update" parameterType="Student">update student set name=#{name},password=#{password},school=#{school} where id=#{id}</update></mapper>mybatis会为这个接口自动提供实现。对于实体类和数据报字段不对应,我们可以自己设置映射:<!– 当实体类和数据库表字段不对应的时候,可以自己建立映射关系 –><select id="getByName" parameterType="String" resultMap="getByNameMap">select * from student where name=#{name}</select><resultMap type="Student" id="getByNameMap"><!– 对于主键 –><id column="User_id" property="id"/><!– 对于非主键 –><result column="User_name" property="name"/><result column="User_password" property="password"/></resultMap>最后测试:@Testpublic void add(){SqlSession session=MyBatisUtils.getSession();Student stu=new Student("張三", "121", "台灣小學");StudentMapper mapper=session.getMapper(jsky.dao.StudentMapper.class);Student st=mapper.getById(1);System.out.println(st);mapper.insert(stu);session.commit();MyBatisUtils.closeSession(session);}对应的源码:mybatis demo

挫折其实就是迈向成功所应缴的学费。

mybatis快速学习(二)

相关文章:

你感兴趣的文章:

标签云: