一、mybatisDao的编写(原始方式,不用)
1.接口编写
public interface UserDao { public void save(User user); public User findUserById(int id); }
2.实现类
public class UserDaoImp implements UserDao { private SqlSessionFactory ssf; public UserDaoImp(SqlSessionFactory ssf) { this.ssf = ssf; } @Override public void save(User user) { SqlSession sqlSession = ssf.openSession(); sqlSession.insert("insertUser", user); sqlSession.commit(); sqlSession.close(); } @Override public User findUserById(int id) { SqlSession sqlSession = ssf.openSession(); User user = sqlSession.selectOne("insertUser", id); sqlSession.commit(); sqlSession.close(); return user; } }
3.测试
public class Demo03 { SqlSessionFactory sessionFactory; @Before public void before() throws IOException { //1.读取配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.通过SqlSessionFactoryBuilder创建SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //3.通过SqlSessionFactoty创建SqlSession } @Test public void test01(){ UserDao dao = new UserDaoImp(sessionFactory); User user1 = dao.findUserById(1); System.out.println(user1);
} }
二、常用dao编写方式(Mapper代理方式)
程序员只需要写mapper接口就行,mybatis会自动生成动态代理实现类
开发规范:
- mapper接口的全限定名要和mapper映射文件的namespace的值相同。
- mapper接口的方法名称要和mapper映射文件中的statement的id相同;
- mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
- mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致;
第一步,编写接口
public interface UserMapper { public int save(User user);//返回受影响的行数. public User findUserById(int id); }
第二步,编写mapper.xml
<mapper namespace="com.law.mapper.UserMapper"> <!--namespace和接口名一样--> <insert id="save" parameterType="com.law.model.User"> INSERT INTO user (username,sex,birthday,address) VALUE (#{username},#{sex},#{birthday},#{address}) </insert> <select id="findUserById" parameterType="int" resultType="com.law.model.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>
配置到全局配置文件中
<mapper resource="com/law/mapper/UserMapper.xml"></mapper>
第三部,使用
@Test public void test01(){ UserMapper userMapper = session.getMapper(UserMapper.class);//默认jdk动态代理 System.out.println(userMapper.findUserById(1)); userMapper.save(new User("xxx","x", new Date(),"sichuan")); }
三、配置Aliases(别名)
<typeAliases> <!--<typeAlias type="com.gyf.model.User" alias="user"></typeAlias>--> <!--指定包名,别名就是类名,第一个小写 User 别名就是user--> <package name="com.law.model"></package> <package name="com.law.vo"></package> </typeAliases>
四、配置文件加载的方式
<mappers> <!--第一种:写映射文件的名字--> <!--<mapper resource="com/gyf/mapper/UserMapper.xml"></mapper>--> <!--第二种:写类名,一定要有个映射文件与之对应 如果没有,那么在UserMapper要声明注解--> <!--<mapper class="com.gyf.mapper.UserMapper"></mapper>--> <!--第三种:可以写包名--> <mapper resource="com/law/mapper/UserMapper.xml"></mapper> </mappers>