配置文件 mybatis-cofig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 数据库配置 --> <properties resource="jdbc.properties"/> <typeAliases> <package name="itat.zttc.shop.model"/><!-- 设置了package后下面的别名就不用单个设置了 --> <!-- <typeAlias type="itat.zttc.shop.model.User" alias="User"/> --> <!-- 设置别名 可以直接在映射文件中的参数类型中使用别名--> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- 映射文件配置 --> <mappers> <mapper resource="itat/zttc/shop/model/User.xml" /> </mappers> </configuration>
映射文件User.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="itat.zttc.shop.model.User"> <!-- namespace 是自定义的 --> <insert id="add" parameterType="User"> <!-- 使用了 itat.zttc.shop.model.User的别名--> insert into t_user (username,password,nickname,type) value (#{username},#{password},#{nickname},#{type}) </insert> <update id="update" parameterType="User"> update t_user set nickname=#{nickname},password=#{password},type=#{type} where id=#{id} </update> <select id="load" parameterType="int" resultType="User"> <!-- parameterType:参数类型,resultTyp:返回值类型 --> select * from t_user where id=#{id}; </select> <select id="list" resultType="User"> select * from t_user </select> </mapper>
操作
public class TestSql { private SqlSession session=null; @Before public void init(){ try { //读取配置文件 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //建立session SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(inputStream); session=factory.openSession(); } catch (IOException e) { e.printStackTrace(); } } @Test public void add(){ User u=new User(); u.setNickname("校友"); u.setUsername("ljf"); u.setPassword("123"); session.insert(User.class.getName()+".add", u); session.commit(); session.close(); } @Test public void load(){ User u=session.selectOne(User.class.getName()+".load", 3); System.out.println(u.getNickname()); } @Test public void list(){ List<User> list=session.selectList(User.class.getName()+".list"); System.out.println(list.size()); } @Test public void test(){ System.out.println(User.class.getName()); } }
在mybatis中还有一种常用Mapper操作的方式,略。
操作数据时,可以使用注解方式,不使用xml再写映射文件了,虽然注解在其它框架很常用(hibernate,spring),但mybatis功能还是用xml方式更强大
分页注意的事项:
<!-- 下面的注意,#{param}使用?進行替代加 '',${param}完整將字符串完成替代 不加''--> <select id="find" resultType="User" parameterType="map"> select * from t_user where (username like #{name} or nickname like #{name}) order by ${sort} ${order} limit #{pageOffset},#{pageSize} </select>