# Morphia4Mysql **Repository Path**: dspeaker/Morphia4Mysql ## Basic Information - **Project Name**: Morphia4Mysql - **Description**: Morphia for Mysql. - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2013-12-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #Morphia for Mysql Morphia for Mysql是[Morphia](http://code.google.com/p/morphia/)的Mysql实现。 额外增加了Sql语句的调用、事务的支持。 ##使用说明及例子 ###数据实体的建立 @Entity("User") public class TestUser { //用Id注解,表示自增主键 @Id private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ###基本数据操作 //通过DataSource和数据实体所在的包构造Datastore。 Datastore datastore = new MysqlDatastore(dataSource, new String[] {"com.google.code.jbauble.db"}); //创建一个新对象 TestUser u = new TestUser(); u.setName("hello"); datastore.insert(u); Assert.assertTrue(u.getId() != null); //更新记录 int n = datastore.update(u); Assert.assertTrue(n > 0); //删除记录 datastore.delete(u); //查询并返回记录 Query q = datastore.createQuery(TestUser.class); List list = q.asList(); Assert.assertTrue(list.size() > 0); //查询并返回单个对象 Query q = datastore.createQuery(TestUser.class); TestUser u = q.filter("name =", "hello").get(); Assert.assertTrue(u != null); //order Query q = datastore.createQuery(TestUser.class); q.order("name"); //或q.order("-name"); //offset,从x条记录后取 q.offset(10); //limit,总共取x条记录 q.limit(10); //countAll,得到记录数 q.countAll(); ###执行Sql,事务 //从Datastore得到sql操作对象 SqlNative sqlNative = datastore.getSqlNative(); //插入并返回自增主键 String sql = "insert into User(name) values(?)"; Object id = sqlNative.executeInsert(sql, new Object[]{"hello"}); Assert.assertTrue(id != null); //更新 String sql = "update User set name=? where name=?"; int n = sqlNative.execute(sql, new Object[]{"world", "hello"}); Assert.assertTrue(n > 0); //查询并返回对象列表 String sql = "select * from User"; List list = sqlNative.queryForList(sql, null, TestUser.class); Assert.assertTrue(list.size() > 0); //查询并返回单个对象 String sql = "select * from User where name=?"; TestUser u = sqlNative.queryForObject(sql, new Object[]{"hello"}, TestUser.class); Assert.assertTrue(u != null); //事务处理 SqlTransaction t = sqlNative.beginTransaction(); try { String sql = "insert into User(name) values(?)"; Object id = t.executeInsert(sql, new Object[]{"1"}); Assert.assertTrue(id != null); id = t.executeInsert(sql, new Object[]{"2"}); Assert.assertTrue(id != null); t.commit(); } catch (DataAccessException e) { t.rollback(); } ###查询操作符(Query.filter所支持的) * = 等于 * > 大于 * >= 大于等于 * < 小于 * <= 小于等于 * != 不等于 * in 包含 * nin 不包含 * like 模糊查询