Mybatis 别名机制,自动扫描 数据的增删改
mybatis别名机制:
在mybatis.xml文件中的<configuration></configuration>标签中间加入属性<typeAliases></typeAliases>
<?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> <!-- 类型别名 --> <typeAliases> <!-- <typeAlias type="com.maya.model.TUser" alias="test"/> --><!-- 别名 --> <package name="com.maya.model" /> <!-- 有点像spring中的那个扫描器 --> </typeAliases> <environments default="test1"> <environment id="test1"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="zhao"/> <property name="password" value="123"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/maya/dao/TUserMapper.xml"/> </mappers> </configuration>
此时,在TUserMapper.xml文件中,将resultType改一下
<?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="com.maya.dao.TUserMapper"><!-- 一般的命名规则,包名开始,到对应的配置文件结束 --> <!-- <select id="List" resultType="com.maya.model.TUser" >--> <!-- 原来的的样式 --> <!-- <select id="List" resultType="test" > --> <!-- 用别名的方式 --> <select id="List" resultType="tUser"> <!-- 扫描的方式,命名规则:对应的类的名,首字母小写 --> select * from t_user </select> </mapper>
经测试,依然可以执行
假设数据库中的列名与实体类中的数据类型对应不起来,那么需要在配置文件中加入如下代码
<?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="com.maya.dao.TUserMapper"> <!-- 需要加的部分 --> <resultMap type="tUser" id="user"> <result property="username1" column="username" jdbcType="number" javaType="int"/> <!--property是实体类中的属性,column是数据库中的字段 jdbctype 数据库中的字段类型 --> </resultMap> <select id="List" resultType="tUser"> select * from t_user </select> </mapper>
增删改:
添加:
<?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="com.maya.dao.TUserMapper"> <insert id="add" parameterType="TUser"> <!--传过来的实体类 --> insert into t_user values(#{id},#{userName},#{password})<!--sql语句,里面对应着实体类的值,这里是#{} 不是el表达式 --> </insert> </mapper>
junit测试
@Test
public void insert(){
TUser tu=new TUser();
tu.setId(1);
tu.setUserName("赵六");
tu.setPassword("123456");
int s=ss.insert("com.maya.dao.TUserMapper.add", tu);
System.out.println(s);
}
打印结果如下:
数据库中的结果如下
删除:
<?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="com.maya.dao.TUserMapper"> <delete id="delete" parameterType="int"> delete t_user where id=#{id} </delete> </mapper>
junit测试:
@Test public void delete(){ int s=ss.insert("com.maya.dao.TUserMapper.delete", 1); System.out.println(s); }
数据库中id为1的数据已经没了
改:
<?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="com.maya.dao.TUserMapper"> <update id="update" parameterType="tUser"> update t_user set username=#{userName},password=#{password} where id=#{id} </update> </mapper>
junit测试
@Test public void update(){ TUser tu=new TUser(); tu.setId(4); tu.setUserName("赵六"); tu.setPassword("123456"); ss.update("com.maya.dao.TUserMapper.update", tu); }
十分抱歉,最后这个应该是没错的,电脑上的数据库突然崩了,没法查看 但是我感觉应该是没有错了的
我们不是制造者,我们是代码搬运工